matplotlib错误';362976x273像素的图像大小太大';

matplotlib错误';362976x273像素的图像大小太大';,matplotlib,Matplotlib,我正在绘制一个面积图,其中线图作为数据框结构顶部的线条,如下所示: df = pd.DataFrame({'Date':pd.date_range('2018-1-1', periods=100, freq='D'),'Pre1':np.random.randint(-1000, 1000, 100), 'Pre2':np.random.randint(-750, 1000, 100)}, columns=['Date','Pre1','

我正在绘制一个面积图,其中线图作为数据框结构顶部的线条,如下所示:

df = pd.DataFrame({'Date':pd.date_range('2018-1-1', periods=100, freq='D'),'Pre1':np.random.randint(-1000, 1000, 100),
               'Pre2':np.random.randint(-750, 1000, 100)},
              columns=['Date','Pre1','Pre2'])
df=df.set_index('Date')

我正在使用

plt.figure()
ax3=df.plot(df.index,'Pre1', color="g",linewidth=0.8) #the line
plt.fill_between(df.index,df['Pre1'], facecolor="palegreen", alpha=0.4) # the area
ax3.tick_params(axis="x",direction="in")
ax3.tick_params(axis="y",direction="in")
plt.text(1,100,'Pre')
plt.text(3,-100,'Dis')
plt.ylabel('$')
ax3.legend().set_visible(False)
plt.title('This is a test')
plt.xticks()
ax3.yaxis.grid(True,linestyle='--')
plt.show()
然而,我得到了以下错误:

ValueError: Image size of 362976x273 pixels is too large. It must be less than 2^16 in each direction.

我尝试重新启动内核和Jupyter,但没有成功。还尝试了figsize=(6,8),但不起作用。有人知道问题出在哪里吗?

我想应该是
ax3=df.plot(y='Pre1',color='g',linewidth=0.8)
。但这可能与错误无关

问题来自
plt.text
行。轴限值在2018年的范围内,因此以17500左右的数字单位表示。但是,文本放在位置
1
。那是2017年前的事了

由于某些原因(未知或尚未确定的原因),文本仍然是轴的一部分,并且在jupyter中运行此代码时不会被剪裁。这有效地使轴长2017年,最终产生一个巨大的数字。人们可能认为这是一个错误。但即便如此,您可能也不想将文本放在可以看到的范围之外。因此,您可能希望将文本放置在可见范围内的某些数据坐标处,如

plt.text(17527,100,'Pre')
或者,您希望以轴为单位对其进行定位,如

plt.text(1,1,'Pre', transform=ax3.transAxes)

我取出plt.text位,错误就消失了。所以这正是造成麻烦的原因。谢谢@你是怎么到17500的?那是1970年以后的日子吗?我不能让它工作。我在转换参数方面取得了更大的成功。@Maddenker Pandas动态选择datetimes的单位。您可以使用
ax.get_xlim()
了解选择的单位。这是否回答了您的问题?
plt.text(1,1,'Pre', transform=ax3.transAxes)