python
May 9, 2019

Matplotlib для постпроцессинга v2.0

В прошлой части мы познакомились с основами (для тех, кто еще не успел, советую ознакомиться), теперь перейдем к более сложным вещам.

Подготовка данных.

Для подготовки данных, в зависимости от задачи, советую использовать numpy или pandas.

Создание графиков.

Figure

fig = plt.figures()

Контейнер figure содержит все элементы, необходимые для построения графиков.
Ссылка на документацию

Axes

fig.add_axes()
plot = fig.add_subplot(222)

Сначала add_axes инициализирует subplot'ы, затем второй строчкой мы добавляем новый subplot в формате (строка, столбец, общее число).

Ссылка на add_axes

Для того, чтобы нарисовать простейший график я обычно использую следующий код:

import matplotlib.pyplot as plt

fig = plt.figure(figsize=(8,8))
plt.style.use('seaborn-white')
ax = fig.add_subplot(111)

x = range(10)
y = [item**2 for item in x]

ax.plot(x, y, color='r', linewidth=0.2)

ax.set_xlim(0, 10)
ax.set_ylim(0, 10)

ax.set_xlabel('x', fontsize=7)
ax.set_ylabel('y', fontsize=7)

fig.savefig('example.png')
plt.close(fig)

Попробовать код можно тут.

Если вам не нужно сохранять картинку на диске, вместо

fig.savefig('example')
plt.close(fig)

используйте

plt.show()

Построение одномерных графиков.

plt.plot(x, y)

Строит обычную линию.
Документация

plt.scatter(x, y)

Строит график из точек, не соединенных линиями.
Документация

plt.bar(xvalue, data, width, color...)

Строит вертикальную столбчатую диаграмму.
Документация

plt.barh(yvalue, data, width, color...)

Строит горизонтальную столбчатую диаграмму.Документация

plt.hist(x, y)

Строит гистограмму.
Документация

ax.fill(x, y, color='lightblue')
ax.fill_between(x,y,color='yellow')

Заполняет промежутки под/между графиками.
Документация

Сохранение данных.

plt.savefig('pic.png')
plt.savefig('transparentback.png', transparent=True)

Документация

Примеры.

import matplotlib.pyplot as plt

x = [1, 2.1, 0.4, 8.9, 7.1, 0.1, 3, 5.1, 6.1, 3.4, 2.9, 9]
y = [1, 3.4, 0.7, 1.3, 9, 0.4, 4, 1.9, 9, 0.3, 4.0, 2.9]
plt.scatter(x,y, color='red')

w = [0.1, 0.2, 0.4, 0.8, 1.6, 2.1, 2.5, 4, 6.5, 8, 10]
z = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
plt.plot(z, w, color='lightblue', linewidth=2)

c = [0,1,2,3,4, 5, 6, 7, 8, 9, 10]
plt.plot(c)

plt.ylabel('some numbers')
plt.xlabel('some more numbers')

plt.show()
Примеры графиков разного стиля
import matplotlib.pyplot as plt

x = [0.5, 0.6, 0.8, 1.2, 2.0, 3.0]
y = [10, 15, 20, 25, 30, 35]
z = [1, 2, 3, 4]
w = [10, 20, 30, 40]

fig = plt.figure()
ax = fig.add_subplot(111)
ax.plot(x, y, color='lightblue', linewidth=3)
ax.scatter([2,3.4,4, 5.5],
           [5,10,12, 15],
           color='black',
           marker='^')
ax.set_xlim(0, 6.5)

ax2 = fig.add_subplot(222)
ax2.plot(z, w, color='lightgreen', linewidth=3)
ax2.scatter([3,5,7],
            [5,15,25],
            color='red',
            marker='*')
ax2.set_xlim(1, 7.5)

plt.savefig('mediumplot.png')
plt.show()
Примеры сабплотов

Статья подготовлена и написана для канала Hello World.