如何在DataFrame.plot中仅显示柱状图图例,排除折线图图例?
解决只显示柱状图图例、隐藏折线图图例的问题
我来帮你搞定这个图例显示的问题!你遇到的情况是因为sumdf.plot(ax=ax)会自动给折线图添加图例项,和柱状图的图例混在一起了,咱们可以用两种简单的方法解决:
方法一:绘制折线图时直接禁用图例
这是最直接的方式,在调用折线图绘制函数时,加上legend=False参数,让它不生成图例条目:
import numpy as np import pandas as pd np.random.seed(5) df = pd.DataFrame({'2012':np.random.random_sample((4,)),'2014':np.random.random_sample((4,))}) df.index = ['A','B','C','D'] sumdf = df.T.apply(np.sum,axis=1) # 绘制堆叠柱状图,获取轴对象 ax = df.T.plot.bar(stacked=True) # 关键:绘制折线图时指定legend=False,不生成图例 sumdf.plot(ax=ax, legend=False) # 设置坐标轴范围 ax.set_xlim([-0.5,1.5]) ax.set_ylim([0,3]) # 可选:调整图例位置让布局更美观 ax.legend(loc='upper left')
方法二:事后手动移除折线图的图例项
如果已经完成了绘图,想要事后修改图例,可以通过获取图例的手柄和标签,移除对应折线图的条目:
# 假设已经完成了柱状图和折线图的绘制 handles, labels = ax.get_legend_handles_labels() # 因为折线图是最后绘制的,对应最后一个图例项,所以取前n-1个 ax.legend(handles[:-1], labels[:-1])
这种方法适合你不确定图例顺序的场景,不过方法一更高效直接。
内容的提问来源于stack exchange,提问作者L. Li
相关产品推荐
相关产品推荐

