ggplot2 根据因子设置 geom_point 大小

Posted

技术标签:

【中文标题】ggplot2 根据因子设置 geom_point 大小【英文标题】:ggplot2 Set geom_point Size according to a Factor 【发布时间】:2022-01-17 08:37:49 【问题描述】:

我正在尝试根据一个因素设置geom_point 的大小。我知道不建议这样做,但我的数据非常不平衡(最小值为 6,而最大值大于 10,000)。

我试图使点的大小反映研究的总样本量。我将总样本量分为 6 个级别:小于 100; 100 至 500; 500 至 1,000; 1,000 至 5,000; 5,000 至 10,000;超过 10,000 个。

这是我的尝试:

rct_findings <- findings %>% 
  mutate(
   
    Sample_Size_Range = case_when(
      0 < Outcome_Sample_Size & Outcome_Sample_Size <= 100 ~ "0 < n <= 100",
      100 < Outcome_Sample_Size & Outcome_Sample_Size <= 500 ~ "100 < n <= 500",
      500 < Outcome_Sample_Size & Outcome_Sample_Size <= 1000 ~ "500 < n <= 1,000",
      1000 < Outcome_Sample_Size & Outcome_Sample_Size <= 5000 ~ "1,000 < n <= 5,000",
      5000 < Outcome_Sample_Size & Outcome_Sample_Size <= 10000 ~ "5,000 < n <= 10,000",
      10000 < Outcome_Sample_Size ~ "10,000 < n"),
    
    Sample_Size_Range = fct_relevel(Sample_Size_Range, c("0 < n <= 100", "100 < n <= 500", "500 < n <= 1,000", "1,000 < n <= 5,000", "5,000 < n <= 10,000", "10,000 < n")))
ggplot(rct_findings, aes(x = Effect_Size_Study, y = F_test_var_stat, size = as_factor(Sample_Size_Range))) +
  geom_point() 

我得到的错误信息是:

grid.Call.graphics 中的错误(C_setviewport,vp,TRUE):非有限 视口的位置和/或大小另外:警告消息:1: 不建议对离散变量使用大小。 2:删除了 16 行 包含缺失值 (geom_point)。

有人对如何解决这个问题有任何建议吗?

【问题讨论】:

我怀疑您使用因子的原因是因为您希望最小的与最大的相当,等等。您可以做的是,如果默认的大小调整方法对您来说过于极端,您可以在使用它来设置大小之前转换大小变量(例如平方根)。 欢迎来到 Stack Overflow。请make this question reproducible 包含一个纯文本格式的小型代表性数据集 - 例如dput(findings) 的输出,如果不是太大的话。 【参考方案1】:

这似乎是分箱大小比例的一个很好的用例,通过它您可以完全规避将变量设置为一个因素。

library(ggplot2)
#> Warning: package 'ggplot2' was built under R version 4.1.1

# Dummy data
rct_findings <- data.frame(
  Effect_Size_Study = rnorm(100),
  F_test_var_stat = runif(100),
  Outcome_Sample_Size = runif(100, min = 6, max = 10000)
)

ggplot(rct_findings, aes(x = Effect_Size_Study, y = F_test_var_stat)) +
  geom_point(aes(size = Outcome_Sample_Size)) +
  scale_size_binned_area(
    limits = c(0, 10000),
    breaks = c(0, 100, 500, 1000, 5000, 10000),
  )

由reprex package (v2.0.1) 于 2021 年 12 月 14 日创建

【讨论】:

非常感谢您!效果很好!

以上是关于ggplot2 根据因子设置 geom_point 大小的主要内容,如果未能解决你的问题,请参考以下文章

在 ggplot2 图表中按因子计数

ggplot2 + geom_point + 与大小成比例的气泡(错误“离散值提供给连续比例”)

如何使用ggplot2编辑图例的位置

R语言可视化包ggplot2包通过因子变量设置图像颜色实战

R语言ggplot2使用geom_line函数geom_point函数可视化哑铃图并对哑铃图进行排序(reorder dumbbell plot)

你如何使geom_points透明化