如何在ggplot中区分两个变量?

3

我正在使用ggplot制作两个图表,但现在我已经成功做到了我想要的,我想将这个图表合并成一个。 我的问题是,我每个变量的值和置信区间都是通过引导获得的。我用于每个绘图的数据框如下:

my first data frame my second data frame

正如您所看到的,我有一个用于不同处理(pqual)的列,V1是我的中位数,lower和upper是置信区间的值。

我的绘图脚本如下:

Q10dplot <- ggplot(data=Q10d, aes(x=pqual, y=V1, col=pqual))+
  geom_point()+
  geom_errorbar(aes(ymin=lower, ymax=upper), width=.2)+
  scale_y_continuous(limits=c(0.5,2), breaks = c(0.5,1,1.5,2))+
  scale_colour_manual(values=c("scst" = "aquamarine3",
                               "svar" = "aquamarine4",
                               "ycst" = "darkgoldenrod3",
                               "yvar" = "darkgoldenrod4"))+
  theme_minimal()+
  ggtitle("Q10 d")+
  xlab("pqual") + ylab("Q10")+
  theme_grey(base_size = 22)
Q10dplot

我想把所有东西都放在一个图中,但我不知道该怎么做。
这是我的数据:
d1 <- structure(list(pqual = c("scst", "svar", "ycst", "yvar"), V1 = c(1.57018534500418, 
0.813141641335401, 1.83263172676745, 1.08637937362865), lower = c(1.46430733516951, 
0.754261886214852, 1.83263172676745, 1.04296652726617), median = c(1.56519136055835, 
0.813147324264586, 1.83263172676745, 1.08589629982024), upper = c(1.684225201556, 
0.875420698794502, 1.83263172676745, 1.12960240657212)), class = "data.frame", row.names = c("bootscstd", 
"bootsvard", "bootycstd", "bootyvard"))

d2 <- structure(list(pqual = c("scst", "svar", "ycst", "yvar"), V1 = c(1.52392776239251, 
0.795105955855431, 1.7049070356902, 0.866155843608828), lower = c(1.42095510456812, 
0.740169509961879, 1.67591486183307, 0.831244001139425), median = c(1.52198888072917, 
0.794298998427312, 1.70461432040644, 0.864517118120389), upper = c(1.63130199180125, 
0.85303654089534, 1.73294982674048, 0.908100088043788)), class = "data.frame", row.names = c("bootscst", 
"bootsvar", "bootycst", "bootyvar"))

更清晰地说,我的图表如下所示:

first plot second plot

我想要做这件事:

plot wanted

1个回答

3

将数据框行绑定,然后绘制图表:

d <- data.table::rbindlist(list(d1 = d1, d2 = d2), idcol = "data")

ggplot(data=d, aes(x = pqual, y = V1, shape = data,
                   ymin = lower, ymax = upper, color = pqual))+
  geom_point(position = position_dodge(0.5))+
  geom_errorbar(width = 0.2, position = position_dodge(0.5))

enter image description here


谢谢,我已经开始合并我的数据框,但它没有起作用。但是有了你的代码,它很好地解决了问题。非常感谢。 - Nathan FRIZOT

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