Рассмотрим, как визуализировать результаты анализа средствами библиотеки Matplotlib. Наиболее часто для этого применяют модуль matplotlib.pyplot, который предоставляет как функциональный, так и объектный интерфейс. Как правило, первый применяют, если требуется нарисовать один график, а второй - несколько. Общепринято импортировать данный модуль под псевдонимом plt: import matplotlib.pyplot as plt
В демонстрационных целях зададим точки, соответствующие графику логарифма: x = np.linspace(1,20,10) y = np.log(x)
Теперь зададим простейшие настройки:
plt.plot(x,y, label = 'название графика')
plt.title('Заголовок')
plt.xlabel('Подпись оси x')
plt.ylabel('Подпись оси y', rotation=90)
plt.legend()
В первой строке задается тип графика и на вход функции plot передаются точки, здесь же указывается название кривой. Далее:
plt.title - задает название всего рисунка;
plt.xlabel - подпись оси x;
plt.ylabel - подпись оси y, по желанию для поворота можно использовать аргумент rotation;
plt.legend - инициирует отображение названия графика и различных надписей на нем.
При задании тех же параметров для столбцовой диаграммы получается следующий результат:
plt.bar(x,y , label = 'название графика')
plt.title('Заголовок')
plt.xlabel('Подпись оси x')
plt.ylabel('Подпись оси y', rotation=90)
plt.legend()
Не очень красиво выглядят метки на оси x, так как выбраны автоматически и не соответствуют значениям x. Чтобы это справить можно задать:
plt.xticks(x, np.round(x,2))
В качестве первого параметра задается положение меток, второго - их наименования. Если задан один параметр, то и положение, и наименования будут заполняться этими значениями:
plt.xticks(x, np.round(x,2))
plt.yticks(y)
Если добавить такие строки, то:
Если бы значения y были более подробные, отсутствие явно заданных наименований могло бы привести к излишней детализации значений и ухудшению внешнего вида графика.
Когда не требуется выводить метки по оси, можно задать пустой список в xticks/yticks:
plt.xticks([])
Также иногда полезно задавать границы отображения графика по осям с помощью plt.xlim/plt.ylim (также вернем метки, чтобы было понятно):
plt.xticks(x, np.round(x,2))
plt.xlim([5,10])
Для этих целей можно воспользоваться таким трюком - добавить пустой график с заданным значением свойства label:
plt.scatter([],[],label='Дополнительная надпись')
Воспользуйтесь функцией savefig:
plt.savefig('pict.png')
В этом случае используется объектный интерфейс. Распространенный способ его применения выглядит следующим образом:
fiq, ax = plt.subplots(2,3, sharex=True, sharey=True)
С помощью plt.subplots получаем объект рисунка и массив подграфиков, где первое число - количество строк, второе - столбцов, sharex, sharey задают нужно ли разделять ось между подграфиками. Затем в цикле заполняются подграфики:
Соответствие между методами функционального и объектного интерфейса следующее:
plt.title -> fig.suptitle
plt.xlabel -> ax_i.set_xlabel
plt.xticks -> ax_i.set_xticks, ax_i.set_xticklabels
plt.xlim -> set_xlim
plt.legend -> ax_i.legend
fig.subplots_adjust - используется для задания размеров полеи? между подграфиками. Вынесенные за пределы цикла методы set_xlabel и set_ylabel позволяют задать заголовки осей, начиная с определенных подграфиков.
Для сохранения графиков в файле можно воспользоваться методом savefig объекта рисунка:
fig.savefig('pict.png')