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

Pandas绘图:为两个DataFrame添加独立图例(柱状图+折线图)

解决同一画布中堆叠柱状图与折线图的独立图例问题

要实现两个独立图例,核心是手动分离两种图表的绘图元素,分别创建图例。以下是修改后的代码及说明:

ax = figure.add_subplot(111)
# 绘制堆叠柱状图并捕获绘图对象
bar_plot = df_Plot.iloc[0:plotFinish].plot.bar(title=employee, xlabel="Date", ylabel="FTE", ax=ax, stacked=True)
# 提取柱状图的绘图元素和标签
bar_handles, bar_labels = ax.get_legend_handles_labels()
# 移除自动生成的合并图例
ax.legend_.remove()

# 绘制折线图
line_plot = df_Plot1.iloc[0:plotFinish].plot(ax=ax, linewidth=4)
# 提取折线图的绘图元素和标签
line_handles, line_labels = ax.get_legend_handles_labels()
# 移除折线图自动添加的图例
ax.legend_.remove()

# 创建第一个图例(对应堆叠柱状图)
ax.legend(bar_handles, bar_labels, loc='upper left', title='堆叠柱状图')
# 创建第二个图例(对应折线图),用add_artist避免被覆盖
second_legend = ax.legend(line_handles, line_labels, loc='upper right', title='折线图')
ax.add_artist(second_legend)

关键细节:

  • 调用绘图方法后,通过ax.get_legend_handles_labels()分别提取两种图表的绘图元素(handles)和对应标签(labels)
  • 必须先移除自动生成的合并图例,否则新图例会出现混乱
  • 第二个图例需要用ax.add_artist()添加,否则Matplotlib会自动替换掉第一个图例
  • 可通过loc参数调整图例位置,比如upper left和upper right避免重叠

内容的提问来源于stack exchange,提问作者Jim Rutter

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 08:22:06