将带有次要y轴的熊猫条形图的图例放在条形图之前

时间:2019-07-03 19:30:39

标签: python pandas matplotlib plot jupyter-notebook

我有一个带有辅助y轴的pandas DataFrame,我需要一个条形图,条形图的前面是图例。当前,图例前面有一组标尺。如果可能的话,我还要将图例放在左下角。任何想法表示赞赏!

我试图设置legend = false并添加一个自定义图例,但是它具有相同的问题。我已经尝试过对列进行重新排序,但是无法在图表上为此清除空格。

import pandas as pd
import matplotlib.pyplot as plt

df_y = pd.DataFrame([['jade',12,800],['lime',12,801],['leaf',12,802], 
       ['puke',12,800]], columns=['Territory','Cuisines','Restaurants'])
df_y.set_index('Territory', inplace=True)

plt.figure()
ax=df_y.plot(kind='bar', secondary_y=['Restaurants'])
ax.set_ylabel('Cuisines')
ax.right_ax.set_ylabel('Restaurants')
plt.show()

在图例后面出现一组条形,在图例前面出现一组条形。下面的链接转到显示问题的图像。谢谢!

link to image

1 个答案:

答案 0 :(得分:3)

您可以自己创建图例。

使用颜色循环器在压缩列时可以使颜色正确。确保在条形图中设置legend=Falseloc=3是左下角。

import matplotlib.patches as mpatches
import matplotlib.pyplot as plt

fig, ax = plt.subplots()
df_y.plot(kind='bar', secondary_y=['Restaurants'], legend=False, ax=ax)
ax.set_ylabel('Cuisines')
ax.right_ax.set_ylabel('Restaurants')

L = [mpatches.Patch(color=c, label=col) 
     for col,c in zip(df_y.columns, plt.rcParams['axes.prop_cycle'].by_key()['color'])]

plt.legend(handles=L, loc=3)
plt.show()

enter image description here