首页 > 解决方案 > 在 xaxis 上标注日期

问题描述

我有以下代码:

import pandas as pd
from pandas_datareader import data as web
import matplotlib.pyplot as plt
import datetime as datetime
start = datetime.date(2008,1,1)
end = datetime.date.today()
start1 = datetime.date(2019,1,1)
data = web.get_data_yahoo("AAPL",start, end)
data1 = web.get_data_yahoo("AMZN", start1, end1)
ax = data.plot(y ="Close")
data1.plot(y = "Close", ax=ax)

生成的图表如下所示:

在此处输入图像描述

我如何注释 AMZN 的橙色线,以便我可以看到日期。有没有办法可以画出一条直线并将其日期显示在 xaxis 上?

标签: python-3.xmatplotlibannotations

解决方案


如果您在 x 轴上绘制日期刺痛,我认为您会得到一个结块的结果。在旁边添加文本符号怎么样:

ax.text(start1, data1.Close[0], start1, ha='right', va='top', rotation=90)

如果您还想添加垂直线,这是完整的代码:

import pandas as pd
from pandas_datareader import data as web
import matplotlib.pyplot as plt
import datetime as datetime
start = datetime.date(2008,1,1)
end = datetime.date.today()
start1 = datetime.date(2019,1,1)
data = web.get_data_yahoo("AAPL",start, end)
data1 = web.get_data_yahoo("AMZN", start1, end)
ax = data.plot(y ="Close")
data1.plot(y = "Close", ax=ax)

ylims = ax.get_ylim()
ax.vlines(start1, ylims[0], data1.Close[0], linestyles='--')
ax.text(start1, data1.Close[0], start1, ha='right', va='top', rotation=90)
ax.set_ylim(ylims)

在此处输入图像描述


推荐阅读