我有两个数据框df和df2。他们以日期为索引,以股价为列。 日期df是1/12 / 18-now df2的日期现在是+1天,现在是+2天,现在是+3天 我想将它们绘制在同一张图中。我还希望x asix的间隔为10天。这是我的尝试
import matplotlib.pyplot as plt
import numpy as np
import matplotlib.dates as mdates
ax1 = plt.subplots(111)
ax2 = plt.subplots(112)
plt.xticks(rotation=70)
y1=df
y2=df2
X2=pd.to_datetime(df2.index)
x=pd.to_datetime(df.index)
ax1.plot(x, y1, 'g-')
ax2.plot(x2, y2, 'b-')
ax1.xaxis.set_major_locator(mdates.DayLocator(interval=10))
ax1.xaxis.set_major_formatter(mdates.DateFormatter('%d-%m-%Y'))
但是获取密钥错误消息为
---> 17 ax1.plot(x, y1, 'g-')
18 ax2.plot(x2, y2, 'b-')
AttributeError:“元组”对象没有属性“ plot”
答案 0 :(得分:1)
您调用了一个类似的名称,但是方法错误。必须是:
ax1 = plt.subplot(111)
ax2 = plt.subplot(112)
plt.subplots(111)
创建111个子图。 plt.subplot(111)
在位置111
中创建一个子图。
答案 1 :(得分:1)
子图的参数是您要创建的子图的数量。因此,给一个,似乎想要您需要的。如果要在同一图中绘制它们两者,请使用相同的轴。
fig,ax1 = plt.subplots(1)
y1=df
y2=df2
X2=pd.to_datetime(df2.index)
x=pd.to_datetime(df.index)
ax1.plot(x, y1, 'g-')
ax1.plot(x2, y2, 'b-')