Вызов Pyplot
import matplotlib.pyplot as plt
Pyplot — интерфейс для построения графиков простых функций.
import matplotlib.pyplot as plt
# Создание объекта Figure
fig = plt.figure()
# тип объекта Figure
print (type(fig))
# scatter — метод для нанесения маркера в точке (1.0, 1.0)
plt.scatter(1.0, 1.0)
print (fig.axes)
# После нанесения графического элемента в виде маркера, список текущих областей состоит из одной области
plt.show()
Сохранение рисунка
Чтобы сохранить получившийся рисунок можно воспользоваться методом plt.savefig() — сохранение текущей конфигурации текущего
рисунка в графический файл с некоторым расширением (png, jpeg, pdf и др.), который можно задать через параметр fmt.
Например,
plt.savefig(‘{}.{}’.format(name, fmt), fmt=’png’) или
plt.savefig(‘Probnyi.png’, dpi=100)
Её нужно вызывать в конце исходного кода, после вызова всех других команд. Если в python-скрипте создать несколько рисунков figure и
попытаться сохранить их одной командой plt.savefig(), то будет сохранён последний рисунок figure.
Простейший график
Зададим точки. Абсциссы определяются в диапозоне (-10.,10.), таким образом, чтобы всего получилось 20 точек. Ординаты расчитываются
через уравнение y=x^2
import matplotlib.pyplot as plt
import numpy as np
x = np.linspace(-10, 10, 20)
y = x**2;
plt.plot(x, y, color=’red’, label=’Линия 1′)
plt.plot (x, y, color=’red‘, label=’Линия 1‘);
plt.grid () # сетка
plt.xlabel (‘ось x‘, fontsize=14) # добавляем подпись к оси абцисс «ось х»
plt.ylabel (‘ось y‘, fontsize=14) # добавляем подпись к оси ординат «ось y»
plt.title (r’График функций $y = x ^2$’, fontsize=16, y=1.05) # доббавляем заголовок к графику «График функции y=x^2
plt.text (-2., 10., ‘Минимум’,fontsize=12) # добавляем подпись к графику в точке (-2.5, 10)
plt.plot (x, y, color=’red‘, label=’Линия 1‘);
plt.grid () # сетка
plt.xlabel (‘ось x‘, fontsize=14) # добавляем подпись к оси абцисс «ось х»
plt.ylabel (‘ось y‘, fontsize=14) # добавляем подпись к оси ординат «ось y»
plt.title (r’График функций $y = x ^2$’, fontsize=16, y=1.05) # доббавляем заголовок к графику «График функции y=x^2
plt.annotate(‘Минимум’, xy=(0.,0.), xytext=(-1.9,70.),fontsize=12, arrowprops = dict(arrowstyle = ‘->’,color = ‘red’))
Расположение текста на графике
import matplotlib as mpl
import matplotlib.pyplot as plt
import numpy as np
a = 1.
x = np.arange(0., 2*np.pi, 0.1)
xz = a*(np.sin(x) — np.cos(2*x))
fig = plt.figure()
plt.plot(xz)
# выравнивание текста по левому краю
str1 = plt.text(-np.pi/2., np.pi/2., ‘(sin(x)-cos(2*x))’, fontsize=14)
print(‘Text class: %s’ % str1.__class__)
plt.grid()
plt.show()
Шрифты и стили
# Выравнивание текста по левому краю
import matplotlib as mpl
import matplotlib.pyplot as plt
import numpy as np
xz = a*(np.sin(x) — np.cos(2*x))
fig = plt.figure()
plt.plot(xz)
# выравнивание текста по левому краю
str1 = plt.text(-np.pi/2., np.pi/2., ‘(sin(x)-cos(2*x))’, fontsize=14)
print(‘Text class: %s’ % str1.__class__)
plt.grid()
plt.show()
# Текст в рамке
import matplotlib as mpl
import matplotlib.pyplot as plt
import numpy as np
xz = a*(np.sin(x) — np.cos(2*x))
fig = plt.figure()
plt.plot(xz)
plt.text(2., 2., ‘sin(x)-cos(2*x))’, fontsize=14,
# выравнивание по вертикали и по горизонтали
horizontalalignment=’center’, verticalalignment=’center’,
bbox=dict(facecolor=’pink’, alpha=1.0))
plt.grid()
plt.show()
# Текст в относительных координатах области рисования ax
import matplotlib as mpl
import matplotlib.pyplot as plt
import numpy as np
xz = a*(np.sin(x) — np.cos(2*x))
fig = plt.figure()
plt.plot(xz)
# область рисования ax
ax = fig.add_subplot(111)
plt.text(0.5, 0.5, ‘sin(x) — cos(2*x)’, fontsize=14,
horizontalalignment=’center’, verticalalignment=’center’,
transform=ax.transAxes)
plt.grid()
plt.show()
Основные графические команды
Самые простые графические команды
plt.scatter() — маркер или точечное рисование;
plt.plot() — ломаная линия;
plt.text() — нанесение текста.
import matplotlib.pyplot as plt
fig = plt.figure()
scatter1 = plt.scatter(0.0, 1.0)
print(‘Scatter: ‘, type(scatter1))
grid1 = plt.grid(True) # линии вспомогательной сетки
plt.show()
graph1 = plt.plot([-1.0, 1.0], [0.0, 1.0])
print(‘Plot: ‘, len(graph1), graph1)
text1 = plt.text(0.5, 0.5, ‘Text on figure’)
print(‘Text: ‘, type(text1))
grid1 = plt.grid(True) # линии вспомогательной сетки
plt.show()
Диаграммы
plt.bar(), plt.barh(), plt.barbs(), broken_barh() — столбчатая диаграмма;
plt.hist(), plt.hist2d(), plt.hlines — гистограмма;
plt.pie() — круговая диаграмма;
plt.boxplot() — «ящик с усами» (boxwhisker);
plt.errorbar() — оценка погрешности, «усы».
Столбчатая диаграмма
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]
fig = plt.figure()
plt.bar(x, z1)
plt.title(‘Simple bar chart’)
plt.grid(True)
fig = plt.figure()
plt.hist(z)
plt.title(‘Simple histogramm’)
plt.grid(True)
plt.show()
fig = plt.figure()
plt.pie(x, labels=s)
plt.title(‘Simple pie chart’)
plt.show()
fig = plt.figure()
plt.pie(x, labels=s)
plt.title(‘Simple pie chart’)
plt.show()
fig = plt.figure()
plt.errorbar(x, z1, xerr=1, yerr=0.5)
plt.title(‘Simple error bar chart’)
plt.grid(True)
plt.show()
Изображения в изолиниях
plt.contour() — изолинии;
plt.contourf() — изолинии с послойной окраской.
import matplotlib.pyplot as plt
import numpy as np
# создаём матрицу значений
dat = np.random.random(200).reshape(20,10)
fig = plt.figure()
# метод псевдографики pcolor
pc = plt.pcolor(dat)
plt.colorbar(pc)
plt.title(‘Simple pcolor plot’)
fig = plt.figure()
me = plt.imshow(dat)
plt.colorbar(me)
plt.title(‘Simple imshow plot’)
plt.show()
Отображения
plt.pcolor(), plt.pcolormesh() — псевдоцветное изображение матрицы (2D массива);
plt.imshow() — вставка графики (пиксели + сглаживание);
plt.matshow() — отображение данных в виде квадратов.
import matplotlib.pyplot as plt
import numpy as np
# матрица значений
dat = np.random.random(200).reshape(20,10)
fig = plt.figure()
cr = plt.contour(dat)
plt.colorbar(cr)
plt.title(‘Simple contour plot’)
fig = plt.figure()
cf = plt.contourf(dat)
plt.colorbar(cf)
plt.title(‘Simple contourf plot’)
fig = plt.figure()
cf = plt.matshow(dat)
plt.colorbar(cf, shrink=0.7)
plt.title(‘Simple matshow plot’)
plt.show()
Заливка
plt.fill() — заливка многоугольника;
plt.fill_between(), plt.fill_betweenx() — заливка между двумя линиями.
import matplotlib.pyplot as plt
import numpy as np
x = np.arange(0, 4*np.pi+0.1, 0.1)
y = np.sin(x)
z = np.sin(2*x)
x2 = np.arange(20)
y2 = -1.5*x2 + 2.33
z2 = 0.7*x2 — 8.5
Заливка многоугольника
fig = plt.figure()
# метод псевдографики pcolor
plt.fill(x, y, ‘r’)
plt.title(‘Simple fill’)
plt.grid(True)
plt.show()
Заливка между 2 линиями
# fill_between()
fig = plt.figure()
plt.plot(x2, z2, color=’pink’, linewidth=4.0)
plt.plot(x2, y2, color=’r’, linewidth=4.0)
plt.fill_between(x2, y2, z2)
plt.title(‘Simple fill_between’)
plt.grid(True)
# fill_betweenx()
fig = plt.figure()
plt.plot(z, x, color=’pink’, linewidth=4.0)
plt.plot(z, x-1.0, color=’r’, linewidth=4.0)
plt.fill_betweenx(z, x, x-1.0, color=’cyan’)
plt.title(‘Simple fill_betweenx’)
plt.grid(True)
plt.show()
Векторные диаграммы
plt.streamplot() — линии тока;
plt.quiver() — векторное поле.
В списке нет команд для рисования различных геометрических фигур (круги, многоугольники и т.д.). Это связано с тем, что в matplotlib они
вызываются через matplotlib.patches.
import matplotlib.pyplot as plt
import numpy as np
x = np.arange(-2*np.pi, 2*np.pi, 0.1)
u = np.sin(x)*np.cos(x)
v = np.cos(x)
uu, vv = np.meshgrid(u,v)
N = 100
x1 = np.random.random(N).reshape((10, 10))
y1 = np.random.random(N).reshape((10, 10))
Линии тока
fig = plt.figure()
plt.streamplot(x, x, uu, vv)
plt.title(‘Simple stream plot’)
plt.grid(True)
plt.show()
Векторное поле
fig = plt.figure()
plt.quiver(x1, y1, color=’green’)
plt.title(‘Simple quiver plot’)
plt.grid(True)
plt.show()
Параметры, которые определяют эти свойства в различных графических командах, обычно имеют одинаковый синтаксис, то есть
называются одинаково. Стандартным способом задания свойств какого либо создаваемого объекта (или методу) является передача по
ключу: ключ = значение.
Наиболее часто встречаемые названия параметров изменения свойств графических объектов:
- color/colors/c — цвет;
- linewidth/linewidths — толщина линии;
- linestyle — тип линии;
- alpha — степень прозрачности (от полностью прозрачного 0 до непрозрачного 1);
- fontsize — размер шрифта;
- marker — тип маркера;
- s — размер маркера в методе plt.scatter(только цифры);
- rotation — поворот строки на X градусов.