28 June 2020

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

В посте выше Задача двух осей и четырех графиков - введение мы посмотрели как сделать модельные данные.
Давайте теперь поиграем с библиотекой при рисовании.

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

# рисуем x,y реальные и модельные, причем для модельный точками зеленого цвета
# 'go' - первая буква от green, вторая - кружочки
plt.plot( x,y , x,yr ,'go')

# рисуем x,y2 реальные и модельные, причем для модельный точками синего цвета
plt.plot( x,y2 , x,yr2 ,'bo')


Как можно видеть - задача не достигнута и все нарисовалось на одном графике.


Поэтому в данном случае имеет смысл разбить холст на области.
В терминологии matplotlib то, что я называю холст - это figure - объект-контейнер самого высокого уровня. Соответственно область  - это axes,  которая создается вызовом subplot или subplots.
Проще в использовании subplot, которые принимает на вход три цифры через запятую или одну трехзначную цифру и позволяет создать область.
Вот новый код:

# создаем первую область: 
# первая 2 - количество областей по вертикали (rows)
# вторая 1 - количество областей по горизонтали (cols)
# третья 1 - индекс - первая область
plt.subplot(211)
plt.plot( x,y , x,yr ,'go')

# создаем вторую область с индексом 2 соответственно
plt.subplot(212)
plt.plot( x,y2 , x,yr2 ,'bo')


Теперь мы получили уже то, что надо



Второй способ - использовать вызов subplots, который вернет figure и
массив axes:

# создаем области - две по вертикиали в одну колонку
# и запоминаем ссылку на холст(фигуру) и области(оси)
fig, ax = plt.subplots(2,1)

# рисуем первый график в первой области
ax[0].plot( x,y , x,yr ,'go')

# рисуем второй график во второй области
ax[1].plot( x,y2 , x,yr2 ,'bo')


Этот код нарисует в точности такой же рисунок как и выше.

1 comment:

  1. Online Betting & Odds - FEBCasino
    In 1xbet korean the best online febcasino sports betting apps, it is safe to place your bets at the most trusted and secure 메리트 카지노 betting exchanges in the world. We recommend that you

    ReplyDelete