Нарисуйте горизонтальные линии (matplotlib) - PullRequest
0 голосов
/ 04 июля 2019

Я пытаюсь запустить код:

fig, ax = plt.subplots()
ax.plot(x, y, color="g") 
ax.xaxis.set_major_locator(matplotlib.dates.YearLocator())
ax.xaxis.set_major_formatter(matplotlib.dates.DateFormatter('%Y'))
hlines=[40,50]
ax.hlines(hlines, 1, len(x), color='g')
plt.show()

Я ожидаю, что это нарисует что-то вроде этого: enter image description here Рисование диаграммы не проблема, она работает, но рисование горизонтальных линий не работает.

Когда я запускаю свой код, он рисует:

enter image description here

P.S. x создан таким образом: даты до matplotlib даты

x.append(matplotlib.dates.date2num(datetime.strptime(date, '%Y%m%d')))

Ответы [ 2 ]

2 голосов
/ 04 июля 2019

Вы рисуете горизонтальную линию от оси x = 1 до оси x = len(x), которые являются просто произвольными целыми числами, которые не представляют ничего на вашем графике: ваша ось x намного больше, потому что вы используете matplotlib.dates.date2num. Вам необходимо правильно назначить диапазон для вашей горизонтальной линии. Например:

ax.hlines(hlines, min(x), max(x), color='g')

или

ax.hlines(hlines,
          matplotlib.dates.date2num(datetime.strptime(mindate, '%Y%m%d')),
          matplotlib.dates.date2num(datetime.strptime(maxdate, '%Y%m%d')),
          color='g')

или вы можете просто использовать axhline:

ax.axhline(40, color='g')
ax.axhline(50, color='g')
0 голосов
/ 04 июля 2019

Может быть, вы можете использовать этот plt.axhline (self, y = 0, xmin = 0, xmax = 1, ** kwargs) смотри Пример

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...