我正在从一个数据帧绘制数据,其中一些进入主-y-轴,另一个进入第二-y-轴。我分两步绘制,如下所示:
ax=data[['Energy (kWh)','Reactive Energy( kVArh)','CFE',"CFE'"]].plot(figsize=(12,8),xlim=('2020-08-01','2020-08-02'),title='Energy Plots vs. Time',grid=True)
ax2=data[['PF no Cap','Power Factor CRE CdR']].plot(secondary_y=True,ax=ax)我有情节,轴标和我所需要的一切,但传说是错的。我希望它在情节之外,但是当我使用bbox_to_anchor时,会创建第二个图例,并且它只具有与ax2相关的标签(PF无上限,功率因数CRE CdR)。
我怎样才能把有着所有标签的传奇搬到我情节的外面呢?
在这里,我放置了整个代码和一些图片来说明这个问题:
data["CFE'"]=(data['Reactive Energy( kVArh)']-Qcap).clip_lower(0)
data['CFE']=(data['Reactive Energy( kVArh)']-Qcap)
data['PF no Cap']=np.cos(np.arctan(data['Reactive Energy( kVArh)']/data['Energy (kWh)']))
data['Power Factor CRE CdR']=np.cos(np.arctan((data['Reactive Energy( kVArh)']-Qcap_mod).clip_lower(0)/data['Energy (kWh)']))
ax=data[['Energy (kWh)','Reactive Energy( kVArh)','CFE',"CFE'"]].plot(figsize=(12,8),xlim=('2020-08-01','2020-08-02'),title='Energy Plots vs. Time',grid=True)
ax2=data[['PF no Cap','Power Factor CRE CdR']].plot(secondary_y=True,ax=ax)
ax.set(xlabel='Date',ylabel='Energy')
plt.legend(bbox_to_anchor=(1.3,0.7))这就产生了以下情节:
事先谢谢!
发布于 2020-10-19 07:34:09
plt.XXXX系列函数仅作用于当前轴,在本例中是ax2,因为它是最后创建的。我一开始以为调用ax.legend(...)会起作用,但这也不起作用,因为它只考虑来自那个轴的艺术家,而不是来自ax2的艺术家。
与重新创建图例不同,最简单的解决方案是使用ax.legend_.set_bbox_to_anchor(...)将现有图例移动到新位置。
ts = pd.Series(np.random.randn(1000), index=pd.date_range('1/1/2000', periods=1000))
df = pd.DataFrame(np.random.randn(1000, 4), index=ts.index, columns=list('ABCD'))
df = df.cumsum()
ax=df[['A','B']].plot(title='Energy Plots vs. Time',grid=True)
ax2=df[['C','D']].plot(secondary_y=True,ax=ax)
ax.set(xlabel='Date',ylabel='Energy')
ax.legend_.set_bbox_to_anchor((1.3,0.7))
plt.tight_layout()

https://stackoverflow.com/questions/64422216
复制相似问题