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

如何用matplotlib/seaborn为字符串型情感数据绘制箱线图?

解决方案

你不需要将情感类别字符串转为数值,因为箱线图的核心是展示分类变量下数值型数据的分布——这里你需要的是每个情感类别对应的文本长度数值,直接用字符串类型的情感类别作为分组维度即可,这是更规范的可视化思路。

步骤说明

  1. 生成文本长度的数值列:先计算每条文本的字符数或词数,得到可供箱线图分析的数值数据。
  2. 直接用分类变量画箱线图:Matplotlib/Seaborn原生支持将字符串类型的分类变量作为x轴,无需手动编码。

代码示例

用Seaborn实现(推荐,更简洁)

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

# 加载你的数据集(这里用模拟数据示例)
df = pd.DataFrame({
    'text': [
        'i need more power',
        'wheres your motivation',
        'this place was my fathers home',
        'in my restless dreams, I see that town',
        'neutral sample text',
        'another neutral content',
        'super negative long text complaining about everything around',
        'short positive'
    ],
    'sentiment': ['negative', 'positive', 'negative', 'positive', 'neutral', 'neutral', 'negative', 'positive']
})

# 计算文本的字符长度(也可以按词数:df['word_count'] = df['text'].str.split().str.len())
df['text_length'] = df['text'].str.len()

# 绘制箱线图,x轴直接用字符串类型的情感类别
plt.figure(figsize=(8, 6))
sns.boxplot(x='sentiment', y='text_length', data=df, palette='Set2')
plt.title('文本长度按情感类别分布')
plt.xlabel('情感类别')
plt.ylabel('文本字符长度')
plt.show()

用Matplotlib原生实现

import pandas as pd
import matplotlib.pyplot as plt

# 同上,先准备数据和文本长度列
df = pd.DataFrame({
    'text': [
        'i need more power',
        'wheres your motivation',
        'this place was my fathers home',
        'in my restless dreams, I see that town',
        'neutral sample text',
        'another neutral content',
        'super negative long text complaining about everything around',
        'short positive'
    ],
    'sentiment': ['negative', 'positive', 'negative', 'positive', 'neutral', 'neutral', 'negative', 'positive']
})
df['text_length'] = df['text'].str.len()

# 按情感类别分组提取长度数据
groups = df.groupby('sentiment')['text_length'].apply(list)

# 绘制箱线图
plt.figure(figsize=(8, 6))
plt.boxplot(groups.values, labels=groups.index)
plt.title('文本长度按情感类别分布')
plt.xlabel('情感类别')
plt.ylabel('文本字符长度')
plt.show()

补充说明

如果你的需求是查看各情感类别的样本数量,箱线图不是最优选择,用条形图更合适:

sns.countplot(x='sentiment', data=df)

内容的提问来源于stack exchange,提问作者nic.o

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 22:15:29