09 July 2020

Задача двух осей и четырех графиков - маркеры и линии с matplotlib


Рассмотренноые ранее подписи осей и легенды графиков облагораживают графики, однако давайте пойдем еще немножко далее, чтобы привести их в красивый вид: рассмотрим стиль линий и маркеров.
При помощи них мы можем сделать графики еще более читаемыми и понимаемыми.

Вот код:

plt.subplot(211)
# зададим маркер для модели в виде маленького крестика
plt.plot( x,y, label='Model', marker='x')
# зададим маркер для реальных данных как и ранее кружочком
plt.plot( x,yr ,color = 'green', marker='o', label='Real')
plt.xlabel('X')
plt.ylabel('Y', color='red', fontsize=14)
plt.title('First Subplot', color='green', fontsize=14)
plt.legend().set_visible(True)

plt.subplot(212)
plt.plot( x,y2,label='Model', marker='x')
# оставим задание маркера и цвета в старом стиле
plt.plot( x,yr2 ,'bo', label='Real')
plt.xlabel('X')
plt.ylabel('Y2')
plt.title('Second Subplot')
plt.subplots_adjust(hspace=0.70)
plt.legend().set_visible(True)


Что мы увидим при исполнении данного кода ?


Как только мы задали маркер через параметр marker для реальных данных, так сразу у нас появилсь линия. В случае старого задания линии нет.
Для того, чтобы ее не было, надо в первом графике сделать замену вот такого:

plt.plot( x,yr ,color = 'green', marker='o', label='Real')

На вот такое:

plt.plot( x,yr ,color = 'green', marker='o', linestyle='None', label='Real')


Т.е. явно указать, что стиль линии - нет линии ( None ) и тогда мы вернемся к тому, что было
 

Стили маркеров можно посмотреть тут  matplotlib.markers
А стили линий  - тут Linestyles

Теперь сделаем для реальных данных разреженные пунктирные линии и для первого графика вместо кружочков - алмазы.
Вот код:

plt.subplot(211)
plt.plot( x,y, label='Model', marker='x')
plt.plot( x,yr ,color = 'green', marker='D', linestyle='dashed', label='Real')
plt.xlabel('X')
plt.ylabel('Y', color='red', fontsize=14)
plt.title('First Subplot', color='green', fontsize=14)
plt.legend().set_visible(True)

plt.subplot(212)
plt.plot( x,y2,label='Model', marker='x')
plt.plot( x,yr2 ,color = 'green', marker='o', linestyle='dashed', label='Real')
plt.xlabel('X')
plt.ylabel('Y2')
plt.title('Second Subplot')
plt.subplots_adjust(hspace=0.70)
plt.legend().set_visible(True)


И вот что получилось


Теперь разделение маркерами и стилями линий позволяет нам отличить модельные данные от реальных данных

No comments:

Post a Comment