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

Python基于Counter计数结果绘制Barplot方法及选型解答

基于Counter计数结果绘制柱状图的实现方法

具体实现步骤

你拿到的Counter对象是字典的子类,可以直接提取分类标签和对应计数值,用matplotlib或者seaborn都可以快速绘制柱状图,以下是可直接运行的示例代码:
首先提前导入需要的依赖,你已经生成的Counter结果可以直接复用,不需要重复计算:

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

# 这部分是你已经得到的Counter统计结果,直接复用即可
genre_counts = Counter({'Action': 303,
         'Adventure': 259,
         'Sci-Fi': 120,
         'Mystery': 106,
         'Horror': 119,
         'Thriller': 195,
         'Animation': 49,
         'Comedy': 279,
         'Family': 51,
         'Fantasy': 101,
         'Drama': 513,
         'Music': 16,
         'Biography': 81,
         'Romance': 141,
         'History': 29,
         'Crime': 150,
         'Western': 7,
         'War': 13,
         'Musical': 5,
         'Sport': 18})

方法1:纯Matplotlib实现

不需要额外安装可视化库,直接用matplotlib即可完成绘制。由于题材名称较长,推荐用横向柱状图避免标签重叠:

# 先把分类按计数从高到低排序,更符合阅读逻辑
sorted_genres = sorted(genre_counts.items(), key=lambda x: x[1], reverse=True)
genres = [item[0] for item in sorted_genres]
counts = [item[1] for item in sorted_genres]

plt.figure(figsize=(10, 8))
# 横向柱状图调用barh,纵向柱状图调用bar即可
plt.barh(genres, counts)
plt.gca().invert_yaxis() # 反转y轴,把计数最高的类别放在最顶部
plt.xlabel('作品数量')
plt.ylabel('题材类型')
plt.title('不同题材作品数量统计')
# 给每个柱子加上具体数值标签,不用读者对照坐标轴估算
for index, value in enumerate(counts):
    plt.text(value + 3, index, str(value), va='center')
plt.tight_layout() # 自动调整布局,避免标签被截断
plt.show()

方法2:Seaborn实现(样式更简洁美观)

把Counter结果转成pandas DataFrame后,调用seaborn的barplot接口即可快速生成样式统一的图表:

# 转换为DataFrame格式并按计数降序排序
df = pd.DataFrame(genre_counts.items(), columns=['genre', 'count']).sort_values(by='count', ascending=False)

plt.figure(figsize=(10,8))
sns.barplot(data=df, y='genre', x='count', palette='viridis')
plt.xlabel('作品数量')
plt.ylabel('题材类型')
plt.title('不同题材作品数量统计')
plt.tight_layout()
plt.show()

关于柱状图是否为这类数据最优选择的说明

  • 对你当前20个分类的计数场景,柱状图是最优选择之一:它可以清晰呈现不同分类的数值差异,读者可以快速对比不同题材的数量多少、排序关系,一眼识别出最高频(Drama)和最低频(Musical)的类别。
  • 几个优化注意点:
    • 分类标签较长时优先选横向柱状图,避免纵向柱状图的x轴标签旋转重叠,大幅降低可读性
    • 一定要先对计数做排序再绘图,不要按原始乱序排列,排序后可以更直观体现频次梯度
    • 如果分类数量超过30个,建议先筛选Top N的高频分类展示,剩余低频分类合并为「其他」,避免柱子过多过密无法阅读
  • 不推荐用饼图展示这类多分类计数:当分类数超过5个时,人眼很难准确区分面积相近的扇形大小,比如你数据里Sci-Fi(120)和Horror(119)数值几乎一致,饼图完全无法体现两者的微小差异,对比效率远低于柱状图。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 14:06:14