geom_jitter()和stat_summery()的不同组大小

tct7dpnv  于 2023-06-19  发布在  其他
关注(0)|答案(1)|浏览(99)

这是我的第一篇文章。如果您需要更多信息来回答这个问题,请告诉我!
我一直在尝试如何在geom_jitter()和stat_summery()中为组设置不同的大小。
figure made with the R script below
在此图中,为4个组设置了4个形状,我想为单个图(使用geom_jitter())和每组的平均值(使用stat_summery())使用相同的形状。我还指定了每个形状的大小,因为如果我对所有形状使用相同的大小,这些形状的大小看起来会略有不同。事实证明,geom_jitter()和stat_summery()使用不同的size定义,所以我需要在geom_jitter()和stat_summery()中使用不同的“size”值。但是,我不能对它们都使用scale_size_manual(),所以我需要对geom_jitter()或stat_summery()使用一个公共的大小。此图对平均值使用通用大小,但您可以看到Group=1000的菱形看起来比其他三个平均值小。这是我的R脚本为这个数字。

library(ggplot2)  
library(tidyverse)
x %>%
  ggplot(aes(x=Time,y=value),group=Group)+
  geom_jitter(aes(color = Group,shape = Group,size = Group), 
              position = position_jitterdodge(jitter.width=0.2,dodge.width=0.6),alpha=0.3 ) +
  scale_shape_manual(values =  c(15,16,17,18))+
  scale_size_manual(values =  c(6,7,5,7))+
  scale_color_manual(values =  c("green","orange", "red", "blue"))+
  stat_summary(aes(group = Group,shape= Group),
               size=1.3, 
               fun.data="mean_cl_normal",  
               geom = "pointrange",  position = position_dodge(0.6)  )+
  scale_x_discrete(limits=c("90","150"))+ 
  coord_cartesian(ylim=c(0,10))+
  theme_classic()+
  labs(y="lab value",x="lab time", fill="lab group")+
  theme(axis.text.x=element_text(size=12,colour = "black"),axis.text.y=element_text(size=12,colour = "black"),axis.title=element_text(size=14,colour = "black"))

如果有人能告诉我如何为这4个形状的平均值设置不同的大小,我将非常感激。如果有人能告诉我如何更改图例的标题(labs(fill="”)由于某种原因无法工作),我也会很感激。

sshcrbum

sshcrbum1#

正如已经在评论中提到的,你使用的是color aes,因此你必须通过color=而不是fill=来设置图例标题。此外,您必须为所有图例使用相同的标题,即。做labs(..., color="lab group", shape ="lab group", size="lab group")。否则,图例将不会合并。第二,在size aes上为geom_pointrange贴图获得相同的大小,并设置fatten=1。最后我设置了show.legend=FALSE不显示图例中的点范围。
使用一些假随机示例数据:

library(ggplot2)

set.seed(123)

x <- data.frame(
  Time = factor(c(90, 150)),
  value = runif(100, 0, 10),
  Group = sample(LETTERS[1:4], 100, replace = TRUE)
)

ggplot(x, aes(x = Time, y = value)) +
  geom_jitter(aes(color = Group, shape = Group, size = Group),
    position = position_jitterdodge(jitter.width = 0.2, dodge.width = 0.6), 
    alpha = 0.3
  ) +
  scale_shape_manual(values = c(15, 16, 17, 18)) +
  scale_size_manual(values = c(6, 7, 5, 7)) +
  scale_color_manual(values = c("green", "orange", "red", "blue")) +
  stat_summary(aes(group = Group, shape = Group, size = Group),
    fun.data = "mean_cl_normal",
    fatten = 1,
    geom = "pointrange", position = position_dodge(0.6),
    show.legend = FALSE
  ) +
  scale_x_discrete(limits = c("90", "150")) +
  coord_cartesian(ylim = c(0, 10)) +
  theme_classic() +
  labs(y = "lab value", x = "lab time", 
       color = "lab group", shape = "lab group", size = "lab group") +
  theme(
    axis.text.x = element_text(size = 12, colour = "black"),
    axis.text.y = element_text(size = 12, colour = "black"),
    axis.title = element_text(size = 14, colour = "black")
  )

相关问题