我尝试用pandas在matplotlib中绘制子图,但我遇到了问题。当我是情节子情节不显示股票的日期...有我的程序
import pandas as pd
import datetime
import matplotlib.pyplot as plt
import pandas.io.data
df = pd.io.data.get_data_yahoo('goog', start=datetime.datetime(2008,1,1),end=datetime.datetime(2014,10,23))
fig = plt.figure()
r = fig.patch
r.set_facecolor('#0070BB')
ax1 = fig.add_subplot(2,1,1, axisbg='#0070BB')
ax1.grid(True)
ax1.plot(df['Close'])
ax2 = fig.add_subplot(2,1,2, axisbg='#0070BB')
ax2.plot(df['Volume'])
plt.show()
运行此程序拥有自己并解决日期问题.....
答案 0 :(得分:1)
当你打电话给matplotlib's plot()时,你只给它一个数组(例如df [' Close']在第一种情况下)。当只有一个数组时,matplotlib不知道如何使用x轴数据,因此它只使用数组的索引。这就是你的x轴显示数字0到160的原因:你的数组中可能有160个项目。
请改用ax1.plot(df.index, df['Close'])
,因为df.index应该在您的pandas数据帧中保存日期值。
import pandas as pd
import datetime
import matplotlib.pyplot as plt
import pandas.io.data
df = pd.io.data.get_data_yahoo('goog', start=datetime.datetime(2008,1,1),end=datetime.datetime(2014,10,23))
fig = plt.figure()
r = fig.patch
r.set_facecolor('#0070BB')
ax1 = fig.add_subplot(2,1,1, axisbg='#0070BB')
ax1.grid(True)
ax1.plot(df.index, df['Close'])
ax2 = fig.add_subplot(2,1,2, axisbg='#0070BB')
ax2.plot(df.index, df['Volume'])
plt.show()