如何使用seaborn绘制数值最高的前5个平台的小提琴图
实现方法
你只需要先筛选出包含指定5个平台的数据集,再传入绘图函数即可,以下是两种常用实现方案:
方案1:先过滤数据集再绘图(更推荐,可读性更高)
# 定义需要保留的目标平台列表 target_platforms = ['Wii', 'NES', 'GB', 'DS', 'X360'] # 筛选仅包含目标平台的行 filtered_df = df[df['Platform'].isin(target_platforms)] # 用过滤后的数据集绘图 sns.violinplot(x='Global_Sales', y='Platform', data=filtered_df)
注:这里将x、y参数修改为直接传列名字符串,配合
data参数的写法更简洁,和你原写法效果完全一致。
方案2:绘图时临时过滤(无需生成新的DataFrame变量)
sns.violinplot( x=df.loc[df['Platform'].isin(['Wii', 'NES', 'GB', 'DS', 'X360']), 'Global_Sales'], y=df.loc[df['Platform'].isin(['Wii', 'NES', 'GB', 'DS', 'X360']), 'Platform'] )
可选优化:按平台总销量排序Y轴
如果你希望Y轴的平台顺序按总销量从高到低排列,可以加上order参数设置:
target_platforms = ['Wii', 'NES', 'GB', 'DS', 'X360'] filtered_df = df[df['Platform'].isin(target_platforms)] # 计算每个平台的总销量,按从高到低得到排序后的平台列表 platform_order = filtered_df.groupby('Platform')['Global_Sales'].sum().sort_values(ascending=False).index # 绘图时指定顺序 sns.violinplot(x='Global_Sales', y='Platform', data=filtered_df, order=platform_order)
内容的提问来源于stack exchange,提问作者Ruslan Pylypiuk
相关产品推荐
相关产品推荐

