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

如何基于Label标签列生成对应词频的独立可视化分图?

问题原因

你使用的hist()是直方图接口,仅用于统计数值型数据的分布情况,和你需要的「分类单词对应频率的条形图」需求不匹配,所以输出不符合预期。

实现方案

给你两种可直接运行的实现方式:

方案1:仅用matplotlib实现

import pandas as pd
import matplotlib.pyplot as plt

# 获取所有唯一Label值,按你需要的展示顺序调整排序逻辑
label_list = sorted(df['Label'].unique())
# 生成1行3列的子图画布,可自行修改figsize参数调整整体尺寸
fig, axs = plt.subplots(1, 3, figsize=(16, 4))

for ax, label_val in zip(axs, label_list):
    # 筛选当前Label对应的数据集
    group_df = df[df['Label'] == label_val]
    # 绘制条形图
    ax.bar(group_df['Word'], group_df['Frequency'])
    # 设置子图基础样式
    ax.set_title(f'Label = {label_val}')
    ax.set_xlabel('单词')
    ax.set_ylabel('频率')
    # 旋转x轴标签避免文字重叠
    plt.setp(ax.get_xticklabels(), rotation=45, ha='right')

# 自动调整子图间距
plt.tight_layout()
plt.show()

方案2:用seaborn FacetGrid实现(代码更简洁)

import seaborn as sns
import matplotlib.pyplot as plt

# 按Label列生成分面子图
grid = sns.FacetGrid(df, col='Label', height=4, aspect=0.8)
# 每个分面绘制条形图
grid.map(sns.barplot, 'Word', 'Frequency', color='steelblue')
# 统一设置坐标轴标签和分面标题
grid.set_axis_labels('单词', '频率')
grid.set_titles('Label = {col_name}')
# 旋转x轴标签避免重叠
for ax in grid.axes.flat:
    plt.setp(ax.get_xticklabels(), rotation=45, ha='right')

plt.tight_layout()
plt.show()
补充说明
  • 你的原始数据已经按Label分组做了Frequency降序排序,所以绘制出来的条形顺序和数据集顺序完全一致,不需要额外处理
  • 如果需要调整分面布局为竖排,把plt.subplots(1, 3)改成plt.subplots(3, 1),或者把FacetGrid的col参数改成row参数即可
  • 可根据需要自定义柱子颜色、宽度、字体大小等样式,直接给ax.bar或者sns.barplot传入对应参数即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 13:15:01