В этой статье наша цель - создать интуитивно понятный отчет с помощью Matplotlib. Внимание: в процессе работы ни одно офисное ПО не будет востребовано. Мы используем только Python.

Набор значимых графиков данных обычно работает как составляющие отчета. В разговоре хорошая карта лучше, чем речь. Если мы получили эти драгоценные ингредиенты заранее, последний шаг - как правильно их разместить.

Конечно, мы можем использовать Microsoft Word, Powerpoint и т. Д. Но это не обязательно. Здесь я представляю свой рецепт с Matplotlib.

1. Краткое введение данных и диаграмм

На основе файла Excel мы получили несколько репрезентативных диаграмм (гистограмма и диаграмма пончика). Если вы не знаете, как с этим справиться, посмотрите мои предыдущие истории. Ссылки даны, пожалуйста, проверяйте их одну за другой, если вы чувствуете, что задачи для вас непростые или новые.

  1. Знакомство с фабрикой - автор данных
  2. Записывать данные во фрейм данных с помощью Pandas и строить их
  3. Углубиться в данные и изучить потенциальную информацию
  4. Как нарисовать бублик сюжет

При этом мы собрали несколько графиков, состоящих из одного столбика и девяти бублик-графиков.

2. Дизайн макета и базовая настройка с помощью Matplotlib

import matplotlib.pyplot as plt
# set font
plt.rcParams['font.family'] = 'sans-serif'
plt.rcParams['font.sans-serif'] = 'STIXGeneral'
# set A4 paper
fig, ax = plt.subplots(figsize=(8.5, 11))  
# Decorative Lines
ax.axvline(x=.01, ymin=0, ymax=1, color='#44A0AD', alpha=0.3, linewidth=120)
plt.axvline(x=.99, color='#5244AD', alpha=0.3, linewidth=120)
plt.axhline(y=.95, xmin=0.14, xmax=0.86, color='#446BAD', linewidth=5,alpha=0.3)

# set background color
ax.set_facecolor('white')

# remove axes
plt.axis('off')

Если вы сейчас введете «plt.show ()», рисунок будет выглядеть, как показано ниже.

Затем мы должны добавить контент (заголовок, диаграммы и т. Д.) На чистый лист.

Header = 'Annual Report of XXX Factory'
Contact = 'Reporter:____________ \n\nDate:________________ \n\nPlace:_______________ '
page = 'Page 1'
# add text
plt.annotate(Header, (.22,.98), weight='regular', fontsize=20, alpha=.6 )
plt.annotate(Contact, (.34,.18), weight='bold', fontsize=14,alpha=.6)
plt.annotate(page, (.48,.02), weight='medium', fontsize=10)

#add a vital bar chart
from matplotlib.offsetbox import TextArea, DrawingArea, OffsetImage, AnnotationBbox
import matplotlib.image as mpimg
first_plot = mpimg.imread('barplot3.png')
imagebox1 = OffsetImage(first_plot, zoom=0.4)
a = AnnotationBbox(imagebox1, (0.48, 0.68),frameon=False)
ax.add_artist(a)

Итак, первая страница отчета готова.

Точно так же мы продолжаем стиль на второй странице, которая должна быть заполнена подробными графиками пончиков на каждый год.

Чтобы содержание было понятным, нужно аккуратно расположить сюжеты.

fig, ax = plt.subplots(figsize=(8.5, 11))

# Decorative Lines
ax.axvline(x=.01, ymin=0, ymax=1, color='#44A0AD', alpha=0.3, linewidth=120)
plt.axhline(y=.95, xmin=0.14, xmax=0.99, color='#446BAD', linewidth=5,alpha=0.3)
# set background color
ax.set_facecolor('white')

# remove axes
plt.axis('off')
Header = 'Annual Report of XXX Factory'
page2= 'Page 2'
# add text
plt.annotate(Header, (.22,.98), weight='regular', fontsize=20, alpha=.6 )
plt.annotate(page2, (.48,.02), weight='medium', fontsize=10)
first_plot = mpimg.imread('donutplot1.png')
imagebox1 = OffsetImage(first_plot, zoom=0.25)
a1 = AnnotationBbox(imagebox1, (0.29, 0.80),frameon=False)
ax.add_artist(a1)
second_plot = mpimg.imread('donutplot2.png')
imagebox2 = OffsetImage(second_plot, zoom=0.25)
b1 = AnnotationBbox(imagebox2, (0.58, 0.80),frameon=False)
ax.add_artist(b1)
third_plot = mpimg.imread('donutplot3.png')
imagebox3 = OffsetImage(third_plot, zoom=0.1875)
c1 = AnnotationBbox(imagebox3, (0.87, 0.80),frameon=False)
ax.add_artist(c1)

fourth_plot = mpimg.imread('donutplot4.png')
imagebox4 = OffsetImage(fourth_plot, zoom=0.25)
a2 = AnnotationBbox(imagebox4, (0.29, 0.50),frameon=False)
ax.add_artist(a2)
fifth_plot = mpimg.imread('donutplot5.png')
imagebox5 = OffsetImage(fifth_plot, zoom=0.25)
b2 = AnnotationBbox(imagebox5, (0.58, 0.50),frameon=False)
ax.add_artist(b2)
sixth_plot = mpimg.imread('donutplot6.png')
imagebox6 = OffsetImage(sixth_plot, zoom=0.1875)
c2 = AnnotationBbox(imagebox6, (0.87, 0.50),frameon=False)
ax.add_artist(c2)
seventh_plot = mpimg.imread('donutplot7.png')
imagebox7 = OffsetImage(seventh_plot, zoom=0.25)
a3 = AnnotationBbox(imagebox7, (0.29, 0.20),frameon=False)
ax.add_artist(a3)
eighth_plot = mpimg.imread('donutplot8.png')
imagebox8 = OffsetImage(eighth_plot, zoom=0.25)
b3 = AnnotationBbox(imagebox8, (0.58, 0.20),frameon=False)
ax.add_artist(b3)
ninth_plot = mpimg.imread('donutplot9.png')
imagebox9 = OffsetImage(ninth_plot, zoom=0.1875)
c3 = AnnotationBbox(imagebox9, (0.87, 0.20),frameon=False)
ax.add_artist(c3)

plt.savefig('report_2.png', dpi=300, bbox_inches='tight')

При этом вторая страница хорошо украшена девятью пончиками.

Кроме того, что мы можем улучшить, так это сделать вывод по этим графикам, который у меня не было времени написать в отчете. Например, из-за пандемии covid-19 общие продажи в 2020 году резко падают.

3. Резюме

В этой короткой статье подробно объясняется подход к созданию отчета, для которого не нужны Word или Powerpoint. В нашем отчете, созданном Matplotlib, представлена ​​соответствующая информация, полученная непосредственно в результате обработки и анализа данных, а это означает, что если вы привыкли обрабатывать данные в Python, нет необходимости переключать приложения или платформы.

Код размещен в Github, который вы можете скачать и просмотреть.