В python есть мощная библиотека matplotlib, которая позволяет работать с научной графикой. Для установки данной библиотеки нужно выполнить команду «python -m pip install matplotlib». При выполнении данной команды библиотека будет автоматически скачана и установлена.
После установки мы можем импортировать библиотеку в свою программу на Python:
import matplotlib as mpl
# Вывод на экран текущей версии библиотеки matplotlib
print ('Current version on matplotlib library is', mpl.__version__)
Важная часть библиотеки matplotlib является класс pyplot. Его то мы сейчас и рассмотрим. Начнем со своеобразного графического «Hello, World!»:
import matplotlib.pyplot as plt fig = plt.figure() # Создание объекта Figure print (fig.axes) # Список текущих областей рисования пуст print (type(fig)) # тип объекта Figure plt.scatter(1.0, 1.0) # scatter - метод для нанесения маркера в точке (1.0, 1.0) # После нанесения графического элемента в виде маркера # список текущих областей состоит из одной области print (fig.axes) plt.show()
Данная программа покажет координатную плоскость и точку на ней:

А теперь попробуем нанести несколько точек, например, построить график некой функции, значение которой приведено в списке:
import matplotlib.pyplot as plt
fig = plt.figure() # Создание объекта Figure
print (fig.axes) # Список текущих областей рисования пуст
print (type(fig)) # тип объекта Figure
fx=[3,3.1,3.2,3.15,3.1,2.9,2.6,2.5,2.3,2.1,1.5,1,0.7]
x=0
for y in fx:
plt.scatter(x, y)
x=x+0.1
# После нанесения графического элемента в виде маркера
# список текущих областей состоит из одной области
print (fig.axes)
plt.show()
И вот что из этого получиться:

А теперь попробуем построить график какой-нибудь функции:
import matplotlib.pyplot as plt
import numpy as np
lag = 0.1 #Задаем шаг
x = np.arange(0.0, 4*np.pi+lag, lag) #Вычисляем массив значений X
y = np.sin(x) #Вычисляем значения функции
#Строим график
fig = plt.figure()
plt.plot(x, y)
#Отображаем заголовки и подписи осей
plt.title('График функции')
plt.ylabel('Ось Y')
plt.xlabel('Ось X')
plt.grid(True)
plt.show()
И вот как этот график будет выглядеть:

На график можно наносить текстовые метки:
plt.text(-0.5, 0.8, 'Монотонно возрастает', fontsize=8, bbox=dict(edgecolor='w', color='w'), rotation=78) plt.text(2.5, 0.8, 'Монотонно убывает', fontsize=8, bbox=dict(edgecolor='w', color='w'), rotation=105)
И вот как это будет выглядеть:

Интересно, что картинку можно сохранить в файл. Для этого у класса piplot есть метод savefig. Вот пример его использования для реализации специальной функции save():
import os
import matplotlib.pyplot as plt
import numpy as np
def save(name='', fmt='png'):
pwd = os.getcwd()
iPath = 'd:\\1\\'.format(fmt)
if not os.path.exists(iPath):
os.mkdir(iPath)
os.chdir(iPath)
plt.savefig('{}.{}'.format(name, fmt), fmt='png')
os.chdir(pwd)
Данная функция позволит нам сохранять результат графического вывода в файлах изображений, например, png, а также, внезапно, в PDF формате! Продемонстрируем это на примере:
N = 100
n = np.sqrt(N)
x = np.arange(n)
# Задаём выборку из Гамма-распредления с параметрами формы=1. и масштаба=0.
z = np.random.random(N).reshape(n, n)
y = z[5,:]
fig = plt.figure()
cc = plt.contourf(z, alpha=0.5) # трёхмерное поле
plt.plot(x, y, label='line', color='red') # красная линия
plt.title('1a. Title') # заголовок
plt.xlabel('2a. Xlabel') # подпись оси OX
plt.ylabel('3a. Ylabel') # подпись оси OY
plt.legend() # легенда
cbar = plt.colorbar(cc) # цветовая шкала
plt.text(2.5, 7, '1. Axes', fontsize=26, bbox=dict(edgecolor='w', color='w'))
plt.text(4, -0.5, '2. XAxis', fontsize=18, bbox=dict(edgecolor='w', color='w'))
plt.text(-0.5, 3.8, '3. YAxis', fontsize=18, bbox=dict(edgecolor='w', color='w'), rotation=90)
plt.text(6.3, 7.2, '4. Legend', fontsize=16, bbox=dict(edgecolor='w', color='w'))
plt.text(9.1, 5., '5. Colorbar', fontsize=16, bbox=dict(edgecolor='w', color='w'), rotation=90)
plt.text(7., 0.8, '6. Xticks', fontsize=12, bbox=dict(edgecolor='w', color='w'))
plt.text(0.8, 8.4, '7. Yticks', fontsize=12, bbox=dict(edgecolor='w', color='w'), rotation=90)
# Подписи для цветовых шкал имеют отличный от остальных подписей синтаксис
cbar.ax.set_xlabel('5a. Colorbar Xlabel', color='k', rotation=30)
cbar.ax.set_ylabel('5b. Colorbar Ylabel', color='k')
plt.text(2.8, 4.8,'6. Grid lines', fontsize=14)
plt.grid(True)
# сохраняем результат
save('pic_1_5_2', fmt='pdf')
save('pic_1_5_2', fmt='png')
plt.show()
Кроме того, что программа покажет картинку, она еще и сохранит ее в файл:

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

И кучу других видов диаграмм, см. пример:
import os
import matplotlib.pyplot as plt
import numpy as np
s = ['one','two','three ','four' ,'five']
x = [1, 2, 3, 4, 5]
z = np.random.random(100)
z1 = [10, 17, 24, 16, 22]
z2 = [12, 14, 21, 13, 17]
# bar()
fig = plt.figure()
plt.bar(x, z1)
plt.title('Простая диаграмма (bar)')
plt.grid(True) # линии вспомогательной сетки
# hist()
fig = plt.figure()
plt.hist(z)
plt.title('Гистограмма (histogramm)')
plt.grid(True)
# pie()
fig = plt.figure()
plt.pie(x, labels=s)
plt.title('Круговая диаграмма')
# boxplot()
fig = plt.figure()
plt.boxplot([z1, z2])
plt.title('Simple box whisker chart')
plt.grid(True)
# errorbar()
fig = plt.figure()
plt.errorbar(x, z1, xerr=1, yerr=0.5)
plt.title('Диаграмма ошибок (errorbar)')
plt.grid(True)
plt.show()
Все комментарии
Чтобы оставить комментарий, необходимо войти или зарегистрироваться.
Пока нет комментариев. Будьте первым!