我正在用线形图作为衬砌的区域图绘制在数据框结构的顶部,如下所示:
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')
和
DatetimeIndex(['2017-01-01', '2017-01-03', '2017-01-04', '2017-01-05',
'2017-01-06', '2017-01-09', '2017-01-10', '2017-01-11',
'2017-01-12', '2017-01-13',
...
'2018-08-29', '2018-08-30', '2018-08-31', '2018-09-03',
'2018-09-04', '2018-09-05', '2018-09-06', '2018-09-07',
'2018-09-10', '2018-09-11'],
dtype='datetime64[ns]', name='Date', length=416, freq=None)
我正在使用
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),无法正常工作。有人知道问题出在哪里吗?
答案 0 :(得分:1)
我认为应该是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)