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

Python数据科学入门:如何使用Matplotlib避免柱状图重叠

解决pandas柱状图重叠问题:生成独立图表

嘿,作为Python数据科学新手,遇到这种绘图重叠的问题太常见啦!我来帮你搞定~

问题根源

你当前的代码会让两个柱状图重叠,是因为pandas的plot.bar()默认会复用当前活跃的matplotlib轴(Axes),两次连续调用就会把图画在同一个画布上,自然就叠在一起了。

解决方案:手动管理画布/轴

这里有两种常用的解决方式,你可以根据需求选择:


方式1:生成并排的子图(推荐,对比更直观)

这种方式会把两个柱状图放在同一个画布的左右子图里,方便直接对比。需要先导入matplotlib.pyplot,然后手动创建子图并指定绘图的轴:

import matplotlib.pyplot as plt

def compare_groups(field):
    if field in less_equal_150_cal.columns:
        # 创建1行2列的子图,设置画布大小
        fig, (ax_left, ax_right) = plt.subplots(1, 2, figsize=(12, 5))
        
        # 给第一个子图绘制≤150卡路里的柱状图,指定轴为ax_left
        less_equal_150_cal[field].plot.bar(
            color='blue', 
            alpha=0.4, 
            title=f"{field} (≤150 Cal)", 
            ax=ax_left
        )
        # 给第二个子图绘制>150卡路里的柱状图,指定轴为ax_right
        more_150_cal[field].plot.bar(
            color='red', 
            alpha=0.4, 
            title=f"{field} (>150 Cal)", 
            ax=ax_right
        )
        
        # 自动调整子图间距,避免标题/标签重叠
        plt.tight_layout()
        # 显示图形
        plt.show()
    else:
        raise ValueError(f"{field} not found")

方式2:生成两个独立的画布窗口

如果你想要两个完全分开的独立窗口(比如分别查看),可以每次绘图前创建新的figure:

import matplotlib.pyplot as plt

def compare_groups(field):
    if field in less_equal_150_cal.columns:
        # 创建第一个独立画布,绘制≤150卡路里的图
        plt.figure()
        less_equal_150_cal[field].plot.bar(
            color='blue', 
            alpha=0.4, 
            title=f"{field} (≤150 Cal)"
        )
        
        # 创建第二个独立画布,绘制>150卡路里的图
        plt.figure()
        more_150_cal[field].plot.bar(
            color='red', 
            alpha=0.4, 
            title=f"{field} (>150 Cal)"
        )
        
        # 显示所有图形
        plt.show()
    else:
        raise ValueError(f"{field} not found")

关键知识点

  • 核心是手动控制matplotlib的画布(Figure)和轴(Axes),避免pandas默认复用同一个轴。
  • plt.subplots()可以快速创建多个子图,适合对比展示;plt.figure()则会创建全新的独立画布。

内容的提问来源于stack exchange,提问作者Sudhir Sharma

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.28 18:08:12