Matplotlib для постпроцессинга v2.0
В прошлой части мы познакомились с основами (для тех, кто еще не успел, советую ознакомиться), теперь перейдем к более сложным вещам.
Подготовка данных.
Для подготовки данных, в зависимости от задачи, советую использовать numpy или pandas.
Создание графиков.
Figure
fig = plt.figures()
Контейнер figure содержит все элементы, необходимые для построения графиков.
Ссылка на документацию
Axes
fig.add_axes() plot = fig.add_subplot(222)
Сначала add_axes инициализирует subplot'ы, затем второй строчкой мы добавляем новый subplot в формате (строка, столбец, общее число).
Для того, чтобы нарисовать простейший график я обычно использую следующий код:
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.