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

在R中可视化二元变量top10与分类变量label的关系及概率实现

解决方案

步骤1:计算各分类下top10=1的概率

先通过groupby计算每个label类别中top10取1的比例(二元变量的均值即为1的占比,也就是你要的概率):

import pandas as pd

# 假设你的DataFrame名为df
prob_df = df.groupby('label')['top10'].mean().reset_index()
prob_df.columns = ['label', 'top10_prob']  # 重命名列,方便后续绘图

步骤2:可视化展示

方法1:Matplotlib 柱状图

这是最直观的对比方式,能清晰呈现不同分类的概率差异:

import matplotlib.pyplot as plt

plt.figure(figsize=(10, 6))
plt.bar(prob_df['label'], prob_df['top10_prob'], color=['#1f77b4', '#ff7f0e', '#2ca02c', '#d62728'])
plt.title('各唱片公司作品进入前十的概率')
plt.xlabel('唱片公司类别')
plt.ylabel('进入前十的概率')
plt.ylim(0, 1)  # 限定y轴在概率的0-1区间内
plt.xticks(rotation=45)  # 旋转x轴标签,避免文字重叠
plt.show()

方法2:Seaborn 柱状图(带置信区间)

如果需要体现概率的统计波动,用seaborn的barplot可以直接展示置信区间(默认95%置信区间,也可改为标准差):

import seaborn as sns

plt.figure(figsize=(10, 6))
sns.barplot(data=df, x='label', y='top10', ci='sd')  # ci='sd'展示标准差,保留默认则为95%置信区间
plt.title('各唱片公司作品进入前十的概率(带置信区间)')
plt.xlabel('唱片公司类别')
plt.ylabel('进入前十的概率')
plt.ylim(0, 1)
plt.xticks(rotation=45)
plt.show()

补充优化

  • 若想把y轴改为百分比显示,可添加代码:plt.gca().yaxis.set_major_formatter(plt.FuncFormatter(lambda x, _: f'{x*100:.0f}%'))
  • 如果你已有导入绘图库的代码,可直接复用,无需重复导入

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 14:55:21