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

R语言中通过图表对比不同Freq对应的Provided数值的方法

问题解答

原代码不符合预期的原因

  • 你的数据集有19万+观测,直接使用geom_point()会出现严重的点重叠(过绘制),无法看清数据分布规律
  • geom_line()默认按数据行顺序连接散点,在x轴存在大量重复取值的情况下,连线完全没有趋势参考价值

一、可视化Freq与Provided的关联

前置数据预处理

首先过滤两个变量的缺失值,避免绘图异常:

library(tidyverse)
df_clean <- df %>% drop_na(Freq, Provided)

方案1:带拟合线的透明散点图

适合看整体趋势,通过透明度解决过绘制问题,叠加拟合线直观判断正相关是否存在:

ggplot(df_clean, aes(x = Freq, y = Provided)) +
  geom_point(alpha = 0.2, size = 0.8) + # 降低透明度、缩小点尺寸避免重叠
  geom_smooth(method = "lm", se = TRUE, color = "red") + # 线性拟合线,可改为method="loess"看非线性趋势
  labs(x = "Freq", y = "Provided", title = "Freq与Provided的相关性趋势") +
  theme_bw()

方案2:分组箱线图

如果Freq的取值为有限的离散值,按Freq分组绘制Provided的箱线图,可清晰查看每个Freq对应的Provided分布:

ggplot(df_clean, aes(x = factor(Freq), y = Provided)) +
  geom_boxplot() +
  labs(x = "Freq", y = "Provided", title = "不同Freq取值下Provided的分布") +
  theme_bw() +
  theme(axis.text.x = element_text(angle = 45, hjust = 1)) # x轴标签过多时可旋转避免重叠

二、对比Freq≥10与Freq<10的Provided差异

第一步:构造分组变量

df_clean <- df_clean %>%
  mutate(Freq_group = ifelse(Freq >= 10, "Freq≥10", "Freq<10"))

方案1:箱线图(最直观)

直接对比两个分组的Provided分位数分布:

ggplot(df_clean, aes(x = Freq_group, y = Provided)) +
  geom_boxplot() +
  labs(x = "Freq分组", y = "Provided", title = "不同Freq分组下Provided的分布对比") +
  theme_bw()

方案2:小提琴+箱线组合图

可同时展示分布密度和分位数信息:

ggplot(df_clean, aes(x = Freq_group, y = Provided)) +
  geom_violin(alpha = 0.5, fill = "lightblue") +
  geom_boxplot(width = 0.2, fill = "white") +
  labs(x = "Freq分组", y = "Provided", title = "不同Freq分组下Provided的分布对比") +
  theme_bw()

补充说明

如果Provided存在极端异常值,可在绘图代码中添加scale_y_log10()对Y轴做对数转换,避免异常值压缩有效数据的展示空间;如果需要统计验证两组差异,可配合wilcoxon秩和检验输出显著性p值。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 14:54:06