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

如何在R中按政权类型子集绘制Score和Rank的箱线图

嘿,这事儿好办!针对你的gov数据集,我给你准备了两种主流工具的实现方案——R(用ggplot2)和Python(用seaborn),你挑自己顺手的来:

方案一:用R的ggplot2绘制

要实现每种政权类型下四个变量的箱线图,核心是先把宽格式数据转成长格式,这样ggplot能更方便地分组绘图:

  1. 先加载必需的包:
library(ggplot2)
library(tidyr) # 用于数据格式转换
  1. 将你的宽格式数据转为长格式:
# 假设你的数据集已经存为数据框gov
gov_long <- gov %>%
  pivot_longer(
    cols = c(EstScore1, rank1, EstScore2, rank2), # 指定要转换的变量
    names_to = "Variable", # 新列,存储原变量名
    values_to = "Value"    # 新列,存储对应变量的数值
  )
  1. 绘制分面箱线图(每个政权类型一个子图,展示四个变量的分布):
ggplot(gov_long, aes(x = Variable, y = Value)) +
  geom_boxplot(fill = "lightblue", alpha = 0.7) + # 设置箱线图样式
  facet_wrap(~ regime, ncol = 2) + # 按政权类型分面,每行2个图
  labs(
    title = "Boxplots of Variables by Regime Type",
    x = "Variable Name",
    y = "Variable Value"
  ) +
  theme_bw() # 用简洁的白色背景主题
方案二:用Python的Seaborn绘制

Python这边思路和R一致,先转长格式再绘图:

  1. 加载所需库:
import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt
  1. 转换数据格式:
# 假设你的数据集已经读入为DataFrame gov
gov_long = pd.melt(
    gov,
    id_vars=['regime'], # 保留的分组列
    value_vars=['EstScore1', 'rank1', 'EstScore2', 'rank2'], # 要转换的变量
    var_name='Variable', # 存储原变量名的列
    value_name='Value'   # 存储数值的列
)
  1. 生成分面箱线图:
# 绘制箱线图,按政权类型分面
sns.catplot(
    data=gov_long,
    x='Variable',
    y='Value',
    kind='box',
    col='regime', # 按regime列分面
    col_wrap=2,   # 每行显示2个分面
    palette='light:#5A9' # 设置配色
)
plt.suptitle('Boxplots of Variables by Regime Type', y=1.02) # 调整标题位置避免被遮挡
plt.show()

如果想调整图的布局(比如改成每行3个分面),只需要修改facet_wrap(R)或col_wrap(Python)的参数值就行~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 06:57:55