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

如何在R中基于dataframe的分组行绘制分组箱线图?

R绘制多分组风险得分箱线图解决方案

核心实现逻辑

你当前只输出单个分组箱线图的原因是提前过滤了仅保留POSTEPAY的交易数据,不需要做过滤操作,直接传入全量数据框即可,ggplot会自动按x轴指定的issuer_name维度分组生成所有发卡行的箱线图:

library(ggplot2)

# 基础实现代码
ggplot(data = df_risk_score, aes(x = issuer_name, y = risk_score)) +
  geom_boxplot()

常用效果优化

解决x轴标签重叠问题

由于发卡行名称较长,默认排布会出现文字重叠,可以通过旋转x轴标签解决:

ggplot(data = df_risk_score, aes(x = issuer_name, y = risk_score)) +
  geom_boxplot() +
  theme(axis.text.x = element_text(angle = 45, hjust = 1))

实现可变宽度箱线图(和示例参考图效果一致)

添加varwidth = TRUE参数即可让箱线图宽度对应各发卡行的交易样本量,样本量越大箱线越宽:

ggplot(data = df_risk_score, aes(x = issuer_name, y = risk_score)) +
  geom_boxplot(varwidth = TRUE) +
  theme(axis.text.x = element_text(angle = 45, hjust = 1))

按风险得分中位数排序优化可读性

可以先对issuer_name按风险得分中位数重排序,更方便直观对比不同发卡行的风险水平差异:

library(dplyr)
library(ggplot2)

df_risk_score %>%
  mutate(issuer_name = reorder(issuer_name, risk_score, FUN = median)) %>%
  ggplot(aes(x = issuer_name, y = risk_score)) +
  geom_boxplot(varwidth = TRUE) +
  theme(axis.text.x = element_text(angle = 45, hjust = 1))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 16:18:00