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

调用df.plot.bar()绘制柱状图出现多柱扭曲如何解决

问题原因

.plot.bar()完全可以实现你需要的单柱状图效果,出现多柱分组是调用方式有误:

  • 你没有显式指定x轴对应的列,而你的cell id列本身是数值类型,pandas默认会将DataFrame中所有数值列识别为独立的y轴绘图系列,相当于同时把cell id、read counts两列都作为数值画成柱子,才会出现每个x位置并排多柱的聚集效果。
正确实现方法

两种写法都可以得到你预期的单柱效果:

方法1:绘图时直接指定x、y映射列

调用绘图命令时显式声明横轴、纵轴对应的列名即可,不需要提前修改DataFrame结构:

# 核心是明确传入x和y参数
df.plot.bar(x='cell id', y='read counts')

方法2:提前将x轴列设置为DataFrame索引

pandas的plot.bar()默认会将DataFrame的索引作为x轴标签,剩余数值列作为y轴数据,因此提前把cell id设为索引后,直接调用绘图命令也能得到正确结果:

# 设置cell id为索引
df_indexed = df.set_index('cell id')
# 此时直接调用即可,剩余列只有read counts,不会出现多组柱
df_indexed.plot.bar()
大数据集优化提示

你的实际数据集规模较大,直接绘图可能出现x轴标签拥挤、图表过窄的问题,可以在绘图时传入参数调整显示效果:

# figsize调整图表宽高,rot调整x轴标签旋转角度,width调整柱子宽度
df.plot.bar(
    x='cell id', 
    y='read counts',
    figsize=(25, 6),
    rot=90,
    width=0.8
)

注:直方图hist是用来展示数值分布的,和你需要的按类别展示数值的柱状图确实是不同图表类型,你不需要改用直方图。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 15:09:19