画水平线(matplotlib)

时间:2019-07-04 18:52:07

标签: python matplotlib

我尝试运行代码:

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 个答案:

答案 0 :(得分:2)

您正在画一条从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')

答案 1 :(得分:0)

也许您可以使用此plt.axhline(self,y = 0,xmin = 0,xmax = 1,** kwargs) 看到这个Example