2015-09-05 26 views
1

用兩個圖例製作的圖表爲主軸上的條形圖的一個圖例,另一個圖表爲在secondry軸上的折線圖,如何將兩個圖例組合在一起。並保存在一個電源點使用的陰謀使用Pandas DF和Matplotlib繪製主要(棒)和次要(線)軸,但傳說一起顯示..?

下面是我的代碼將傳說放置到兩個位置,但我希望他們被合併爲一個在另一個之下。

ax = df.plot(x=['TIME'],y =['Column A'],kind='bar',use_index=True,color='g',legend=True) 
ax.set_ylabel("Label A") 

ax2 = ax.twinx() 

ax2.plot(df[['Column B']].values,linestyle='-', marker='o', linewidth=2.0,color ='b') 
ax2.set_ylabel("Label B") 
ax2.legend('LegendB',loc=1) 

這生成的情節,但圖例B被放置在右上方角落傳說的是默認放置在左手上角。另外我可以看到傳奇B被切斷,並沒有顯示所有的角色。

當我改變了ax2.legend線

ax2.legend('Legend B',loc=0) 

然後,兩個圖例上的每個疊加other.Quite一團糟實際。

爲了節省我使用的代碼數字作爲

ax2.legend('LegendB',loc=1)  
fig = ax.get_figure() 
fig.set_size_inches(9.5, 3) 
fig.savefig('test.png', bbox_inches='tight',dpi=100) 
plt.show() ## To Show the Plot 

但是,這節省了與傳說相互疊加在LOC圖= 1

所以我的問題是: 1.如何將下面的傳說結合在一起.. ?? 2.何保存它,因爲它顯示的情節.. ??

謝謝你們

回答

0

您可以將多個軸的傳說,但你需要做手工,(半)。有幾個陷阱,你需要知道這裏,因爲你是混合pandas情節,和matplotlib情節。有關更多詳細信息,請參閱matplotlib's legend guide

這裏是我會寫:我添加了一個label參數ax2.plot

ax1 = df.plot(x=['TIME'], y=['Column A'], kind='bar', color='r', legend=False) 
ax1.set_ylabel("Label A") 
ax2 = ax1.twinx() 
ax2.plot(df['Column B'].values, linestyle='-', marker='o', linewidth=2.0, color ='b', label="test2") 
ax2.set_ylabel("Label B") 

lines1, labels1 = ax1.get_legend_handles_labels() 
lines2, labels2 = ax2.get_legend_handles_labels() 
ax2.legend(lines1 + lines2, labels1 + labels2, loc=0) 

通知。這對於確保線路的手柄將由ax2.get_legend_handles_labels()返回非常重要。 Pandas'情節會自動添加一個標籤,所以在那裏沒有任何事情要做。

另請注意,我通過legend=Falsepandas繪圖功能來抑制自動創建的第一個圖例。

+0

非常感謝朝日..它工作。 – MoChen

相關問題