You need to enable JavaScript to run this app. 使用seaborn绘制分组柱状图仅显示yes分类无no数据问题求助
优惠活动
大模型
产品
解决方案
定价
更多

使用seaborn绘制分组柱状图仅显示yes分类无no数据问题求助

问题原因分析
  • melt函数参数与调用对象错误:你定义的df是Python字典,没有melt方法,且存储yes/no分组的列名为DD,原代码误写为不存在的D,导致yes/no分组信息完全丢失,所以只能看到一半数据。
  • 列名大小写不匹配:存储类别信息的列在DataFrame中为大写的M,原代码在catplot的x参数中写为小写的'm',导致x轴取值错误。
  • 展示逻辑错误:原代码没有将DD(yes/no)作为分组维度纳入绘图逻辑,仅手动修改前几行x轴标签,自然无法展示no对应的数据。
修正方案

如果需要每个M类别下同时展示yes/no两组数据,可以选择将DD设为行分组,或者设为第二个hue参数实现同x轴位置并排展示,修正后完整代码如下:

import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt

# 原始数据定义
f = [0.31,0.75,0.75,0.75, 0.66,0.83,0.57, 0.69, 0.64,0.61, 0.81,0.21,0.71,0.71,0.64,0.55,0.72,0.74,0.73,0.77]
p = [0.53, 0.72,0.73,0.70,0.44,0.38,0.68,0.79,0.60,0.76, 0.76,0.32,0.84,0.79,0.80,0.38,0.77,0.86,0.81,0.79]
r = [0.74,0.54,0.63,0.61,0.41,0.83,0.63,0.67,0.63,0.53, 0.86,0.51,0.21,0.68,0.59,0.98,0.78,0.75,0.71,0.67]
a = [0.92,0.93,0.92,0.92,0.94,0.82,0.97,0.94,0.91,0.93, 0.97,0.91,0.94,0.93,0.94,0.71,0.93,0.91,0.85,0.94]
pp=['B','B','B','B','B','T','T','T','T','T','B','B','B','B','B','T','T','T','T','T']  
m=['N','L','S','G','Rt','N','L','S','G','Rt','N','L','S','G','Rt','N','L','S','G','Rt']
d=['yes','yes','yes','yes','yes','yes','yes','yes','yes','yes','no','no','no','no','no','no','no','no','no','no']

df_dict = {'DD':d, 'PP': pp, 'M': m, 'P': p, 'R':r, 'F':f,'A':a}
df = pd.DataFrame(data=df_dict)
# 修正melt参数,保留DD分组字段
df_melt = df.melt(id_vars=['PP', 'M', 'DD'], value_vars=['P','R','F','A'], var_name='variable', value_name='value')

sns.set_style(style='white')
g = sns.catplot(
    data=df_melt,
    x='M', # 修正为大写列名
    y='value',
    hue='PP',
    col='variable',
    col_wrap=2,
    col_order = ['P', 'R', 'F', 'A'],
    kind='bar',
    ci=None,
    # 按DD(yes/no)分行展示,若需要同x轴并排可改为hue='DD'
    row='DD',
    facet_kws={'sharey': False, 'sharex': True},
    height=4.
)
plt.show()

如果需要yes和no的柱子在同一个x轴位置并排展示,只需要删掉row='DD'参数,改为给hue传入列表hue=['PP', 'DD']即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.21 21:06:01