我正在使用ipython笔记本(python 2)并在同一个地块上绘制条形图和线图。有两个系列(NPS和计数等级)。但是,当我尝试显示图例时,它仅显示第二个系列的图例。
以下是我的代码:
ax=nps_funding_month[35:][nps_funding_month['count_ratings']>=100].set_index('funding_month')['nps_percentage'].\
plot(kind='line',color='green',label='NPS')
plt.ylabel('Net Promoter Score')
ax=nps_funding_month[35:][nps_funding_month['count_ratings']>=100].set_index('funding_month')['count_ratings'].\
plot(kind='bar',secondary_y=True,label='Count of Ratings')
plt.ylabel('Count Ratings')
plt.legend()
plt.title('Net Promoter Score by Funding Month\n(Only Funding Months with at Least 100 Reviews)')
答案 0 :(得分:2)
以下代码
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
df=pd.DataFrame({"x" : np.arange(5),
"a" : np.exp(np.linspace(3,5,5)),
"b" : np.exp(-np.linspace(-1,0.5,5)**2)})
ax=df.plot(x="x", y="a", kind='line',color='green',label='NPS')
plt.ylabel('Net Promoter Score')
ax2 = df.plot(x="x", y="b", kind='bar',secondary_y=True,label='Count of Ratings', ax=ax)
plt.ylabel('Count Ratings')
plt.title('Superlongtitle that is not needed')
plt.show()
产生
请注意,第一个轴作为第二个pandas图(ax=ax
)的参数给出,并且没有通过pyplot添加图例(它通过pandas自动传递)。
问题可能是图例隐藏了图例。原因是图例位于第一(下)轴。有两种选择。
我们可以将它移动到辅助轴,然后也改变它的位置。
leg = ax.get_legend()
leg.remove() # remove it from ax
ax2.add_artist(leg) # add it to ax2
leg._set_loc(4)
loc 4
表示"左下角"并且是the codes to place the legend之一。
我们可以将其移出情节,(如How to put the legend out of the plot)
leg._set_loc(2)
leg.set_bbox_to_anchor((1.1,1))
ax.figure.subplots_adjust(right=0.6) # make space for the legend outside