我试图绘制每天的股票收盘价数据,但在x轴上,我没有在xtick上得到标签,而不是年月格式
我尝试在单独的数据框中使用“日期”和“收盘价”列,然后尝试绘制它们。
我有与此相似的数据框
Date Close Price
2017-05-15 912.20
2017-05-16 894.70
2017-05-17 887.05
2017-05-18 871.35
2017-05-19 852.40
df_sorted.plot(x="Date", y="Close Price", figsize=(8, 5))
plt.title('Trend in last two years')
plt.ylabel('Close Price') # add y-label
plt.xlabel('Date') # add x-label
plt.show()
the output should have xtick in year-month format
答案 0 :(得分:1)
只需使用熊猫to_datetime()
函数进行隐蔽
df_sorted['Date'] = pd.to_datetime(df_sorted['Date'])
df_sorted.plot(x="Date", y="Close Price", figsize=(8, 5))
plt.title('Trend in last two years')
plt.ylabel('Close Price') # add y-label
plt.xlabel('Date') # add x-label
plt.show()
答案 1 :(得分:1)
如果您希望每个月仅显示一次报价,请尝试以下操作:
import matplotlib.dates as mdates
df_sorted['Date'] = pd.to_datetime(df_sorted['Date'])
ax = df_sorted.plot(x="Date", y="Close Price", figsize=(8, 5))
plt.title('Trend in last two years')
plt.ylabel('Close Price') # add y-label
plt.xlabel('Date') # add x-label
months = mdates.MonthLocator()
ax.xaxis.set_major_locator(months)
ax.xaxis.set_major_formatter(mdates.DateFormatter("%Y-%m"))
plt.show()
答案 2 :(得分:0)
您需要使用DateFormatter来获取所需的输出格式。尝试此操作
from matplotlib import dates
df_sorted.Date = pd.to_datetime(df.Date)
ax = df_sorted.plot(x="Date", y="Close Price", figsize=(8, 5))
plt.title('Trend in last two years')
plt.ylabel('Close Price') # add y-label
plt.xlabel('Date') # add x-label
ax.set(xticks=df.Date.values)
ax.xaxis.set_major_formatter(dates.DateFormatter("%Y-%m-%d"))
plt.show()