Доброго времени суток, читатели, зрители моего канала programmer's notes. Не забывайте подписываться и писать свои комментарии к моим статьям и видео.
Ещё о столбчатых диаграммах
Ещё не много о столбчатых диаграммах. Иногда удобно в одном столбце показывать несколько значений. Тогда будет наглядно видно соотношение между значениями. Такие столбчатые диаграммы называются сложенными.
#!/usr/bin/python3
import matplotlib.pyplot as plt
nmb = ['1', '2', '3', '4', '5']
a = [3.5, 2, 11, 1, 6]
b = [14, 11.8, 13, 18, 10]
c = [2, 4, 7, 4, 3]
width = 0.5
fig, ax = plt.subplots()
ax.bar(nmb, a, width, label='a')
ax.bar(nmb, b, width, bottom=a, label='b')
ax.bar(nmb, c, width, bottom=a, label='c')
ax.set_ylabel('Значения по Y')
ax.set_xlabel('Значения по X')
ax.set_title('Сложенная столбчатая диаграмма')
ax.legend(loc='best', title='Цвета')
plt.savefig("my_diag.png")
Результат выполнения программы см. на рисунке 1. Как видим, получение таких диаграмм связано с использованием параметра bottom. Кстати обращу также внимание на метод legend() с параметром loc='best', библиотека ищет лучший вариант размещения.
Оси координат в matplotlib
Как вы, наверное заметили, при построении графиков на плоскости оси координат создаются автоматически, при чём на основе данных, которые предстоит отображать. Но в библиотеке matplotlib есть метод axes(), который позволяет создавать несколько осей координат. Зачем это нужно? Смысл в том, что можно на одной картинке изобразить несколько фрагментов со своими осями координат и своими графиками. Иногда в этом имеется смысл (см. Рисунок 2).
#!/usr/bin/python3
import matplotlib.pyplot as plt
import numpy as np
x = np.linspace(-20.0, 1.0, 400)
y = 0.2*np.sin(x)*np.cos(x)
y1 = 0.1*x*x + 0.2*x + 0.2 + 1.1*np.exp(1.5*x)
ax1 = plt.axes([0.1, 0.1, 0.9, 0.9])
ax2 = plt.axes([0.4, 0.4, 0.45, 0.45])
ax1.plot(x, y, color='#ff0000')
ax2.plot(x, y1, color='#00ff00')
plt.savefig("my_diag.png")
Результат выполнения программы см. на рисунке 2.
Библиотека matplotlib позволяет изображать графики функций в трёхмерных координатах (см. программу ниже). Значения x и y вычисляются на основе значений аргумента z (на рисунке 3 ось z вертикальна). Для создания трёхмерных осей координат используется уже известный метод axes() с аргументом projection ='3d'. Наконец, для трёхмерного графика используем метод plot3D().
#!/usr/bin/python3
import numpy as np
import matplotlib.pyplot as plt
fig = plt.figure()
# создаём трёхмерную систему координат
ax = plt.axes(projection ='3d')
# задаём график по трём осям
z = np.linspace(0, 1, 100)
x = np.cos(30 * z) * (z**0.3)
y = np.sin(30 * z) * (z**0.3)
# построение трёхмерного графика
ax.plot3D(x, y, z, '#33bbbb')
ax.set_title('Трёхмерный график функции')
plt.savefig("my_diag.png")
Результат выполнения программы см. на рисунке 3.
Следующая статья
Ну, пока всё!
Пишите свои предложения и замечания, и занимайтесь программированием, а также проектированием баз данных, хотя бы для поддержания уровня интеллекта.