使用scale_size_binned设置ggplot2中的geom_point形状

3
我有以下代码,想知道是否可以在scale_size_binned命令中使用不同的形状。在我的实际数据中,点之间有些难以区分,所以我想为它们使用不同的形状。非常感谢您提供任何建议。
rct <- data.frame(

  Effect_Size_Study = rnorm(100),
  F_test_var_stat = runif(100),
  Outcome_Sample_Size = runif(100, min = 6, max = 10000)
)

ggplot(rct, 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),
  )
2个回答

2
您可以这样使用scale_shape_binned
library(ggplot2)
rct <- data.frame(
  
  Effect_Size_Study = rnorm(100),
  F_test_var_stat = runif(100),
  Outcome_Sample_Size = runif(100, min = 6, max = 10000)
)

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

创建于2022年8月11日,使用reprex包(v2.0.1)创建。

非常感谢@Quinten。我的问题现在是,当使用scale_shape_binned时,图例未显示完整的值范围,就像您不使用它时看到的那样。 - Abby

2
我们可以将形状和大小的图例结合在一起。这与其他答案并没有太大区别,只是涉及到了图例。
library(ggplot2)

set.seed(123)
rct <- data.frame(Effect_Size_Study = rnorm(100),
                  F_test_var_stat = runif(100),
                  Outcome_Sample_Size = runif(100, min = 6, max = 10000))

ggplot(rct, aes(x = Effect_Size_Study, y = F_test_var_stat)) +
  geom_point(aes(size = Outcome_Sample_Size, shape = Outcome_Sample_Size)) +
  scale_size_binned_area(name = "Outcome Sample",
                         limits = c(0, 10000),
                         breaks = c(0, 100, 500, 1000, 5000, 10000),
                         labels = c(0, 100, 500, 1000, 5000, 10000)) +
  scale_shape_binned(name = "Outcome Sample", 
                     limits = c(0, 10000),
                     breaks = c(0, 100, 500, 1000, 5000, 10000),
                     labels = c(0, 100, 500, 1000, 5000, 10000))


谢谢您的回答,但是当我运行您的示例时,出现了以下错误:“Error in f(): ! Breaks and labels are different lengths Run rlang::last_error() to see where the error occurred. " - Abby
@Abby 我特意设置了相同的断点和标签。如果你正在为你的实际数据集更改代码,请确保模仿它。 - M--
当我运行你的示例时,出现了这个错误。 - Abby
1
@Abby 我正在运行 R 4.0.3 和 ggplot 3.3.5。除了版本不同,我不知道为什么你会出现错误。这是一个屏幕截图,展示了我的环境 :) https://i.stack.imgur.com/Y9abM.png - M--

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接