You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.22 08:52:26