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

Seaborn直方图频率数据显示异常,如何正确绘制?

解决Seaborn绘制问卷选项频率直方图柱子高度均为1的问题

问题原因

你用Counter将原始数据转换为每个选项对应频率的DataFrame后,每个选项(包括None)在DataFrame中仅占一行。而seaborn.histplot的默认逻辑是统计x轴每个取值在数据集中的出现次数,因此每个柱子的高度都会是1——这完全不是你需要的频率统计效果。

两种解决方案

方案1:直接用原始数据,让Seaborn自动统计频率

不需要提前用Counter聚合,直接把原始列表传入histplot,它会自动计算每个选项的出现次数,同时可以指定排序规则:

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

# 原始问卷数据
values = ['E', None, 'B', 'H', 'I', 'A', None, None, 'D',
          'C', 'E', 'I', 'C', 'B', None, 'A', None, 'E',
          'F', 'H', 'A', 'D', 'A', 'A', 'F', 'A', 'C',
          'C', 'H', 'E', None, 'B', 'E', 'I', 'G', 'A',
          'I', 'A', 'B', 'I']

sns.set_theme(style="darkgrid")
# 转换为DataFrame
df = pd.DataFrame({'Choice': values})

# 生成按字母顺序排列的选项顺序,将None放在最后(或替换为"空白")
valid_choices = sorted([c for c in set(values) if c is not None])
choice_order = valid_choices + [None]

# 绘制直方图,指定x轴排序
sns.histplot(data=df, x='Choice', order=choice_order)
plt.title('问卷选项频率分布')
plt.show()

方案2:用已聚合的频率数据,使用Barplot

如果你已经用Counter统计好了频率,应该用seaborn.barplot(而非histplot)来展示聚合后的数值,这更符合场景:

import matplotlib.pyplot as plt
from collections import Counter
import seaborn as sns
import pandas as pd

values = ['E', None, 'B', 'H', 'I', 'A', None, None, 'D',
          'C', 'E', 'I', 'C', 'B', None, 'A', None, 'E',
          'F', 'H', 'A', 'D', 'A', 'A', 'F', 'A', 'C',
          'C', 'H', 'E', None, 'B', 'E', 'I', 'G', 'A',
          'I', 'A', 'B', 'I']

sns.set_theme(style="darkgrid")
# 统计频率
counts = Counter(values)
# 转换为DataFrame并命名列
df = pd.DataFrame.from_dict(counts, orient='index').reset_index()
df.columns = ['Choice', 'Frequency']

# 处理None(可选替换为可读标签)并按字母排序
df['Choice'] = df['Choice'].fillna('空白')
df = df.sort_values('Choice')

# 绘制柱状图,直接使用已统计的频率值
sns.barplot(data=df, x='Choice', y='Frequency')
plt.title('问卷选项频率分布')
plt.show()

额外提示

  • 若不想替换None,需手动指定排序规则,避免None打乱字母顺序;
  • histplot适用于原始数据的分布探索,而当你已有聚合后的统计结果时,barplot是更匹配的可视化工具。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.12 19:34:56