如何在R中为同一个范畴并排绘制两个几何图形?(errorbarjitter)

如何在R中为同一个范畴并排绘制两个几何图形?(errorbarjitter),r,data-visualization,ggplot2,R,Data Visualization,Ggplot2,我遇到了大卫·L·斯特恩(David L.Stern)的一些有用的数据,这些数据在每个分类变量的均值/标准差摘要旁边有一个抖动图 这是上面链接的页面中的第一个示例 我花了一些时间试图在网上找到类似的数据,但没有找到 我不确定他使用了哪些软件和软件包来创建这些图形(更新:并解释说他使用了一个函数)。我最熟悉R和ggplot2,我认为使用这些工具一定可以创建类似的东西。我试着直接跳进去,但不知道从这里走到哪里 我是如何开始的: library(dplyr) library(ggplot2) libr

我遇到了大卫·L·斯特恩(David L.Stern)的一些有用的数据,这些数据在每个分类变量的均值/标准差摘要旁边有一个抖动图

这是上面链接的页面中的第一个示例

我花了一些时间试图在网上找到类似的数据,但没有找到

我不确定他使用了哪些软件和软件包来创建这些图形(更新:并解释说他使用了一个函数)。我最熟悉R和ggplot2,我认为使用这些工具一定可以创建类似的东西。我试着直接跳进去,但不知道从这里走到哪里

我是如何开始的:

library(dplyr)
library(ggplot2)
library(tidyr)

df <- data_frame(a = rnorm(100, mean = 0.75, sd  = 0.5), b = rgamma(100, shape = 0.75, scale = 0.5), c = rbinom(100, size = 1, prob = 0.6))
df <- gather(df)
df.sum <- df %>% group_by(key) %>% summarise(mean = mean(value), sd = sd(value))

ggplot(data = df.sum, aes(x = key)) + 
  geom_jitter(data = df, aes(y = value)) + 
  geom_point(aes(y = mean)) +
  geom_linerange(aes(x = key, y = mean, ymin = (mean - sd), ymax = (mean + sd))) +
  theme_bw()
库(dplyr)
图书馆(GG2)
图书馆(tidyr)

df我已经弄明白了!我将把答案贴在这里,以供将来参考,也供其他想要制作类似情节的人参考

对我来说,关键在于将x轴从一个因子转换为一个数值,以便应用移位

library(dplyr)
library(ggplot2)
library(tidyr)

set.seed(125)

df <- data_frame(Normal = rnorm(100, mean = 0.5, sd  = 0.5), 
                 Gamma = rgamma(100, shape = 0.5, scale = 0.5), 
                 Bimodal = c(rnorm(50, mean = 0.1, sd = 0.15), rnorm(50, mean = 0.9, sd = 0.15))
                 )
df <- gather(df)
df.sum <- df %>% 
  group_by(key) %>% 
  summarise(mean = mean(value), sd = sd(value))

ggplot(data = df, aes(x = key, y = value)) + 
  geom_jitter(position = position_jitter(width = 0.2), shape = 1, size = 3.5) + 
  geom_pointrange(data = df.sum, aes(x = as.numeric(key)+0.3, y = mean, ymin = (mean - sd), ymax = (mean + sd))) +
  geom_point(data = df.sum, aes(x = as.numeric(key)+0.3, y = mean), size = 3.5) +
  theme_bw() + xlab("") + ylab("Arbitrary Units")
库(dplyr)
图书馆(GG2)
图书馆(tidyr)
种子集(125)
df非常简单,没有ggplot2

x@Silverfish我原以为这属于“可视化数据”的范畴,但现在我看到了链接中的区别,我可以看出这是一个编码问题。如果那是它的归属地,你可以为我迁移它,我将不胜感激@这是一个很好的提问的地方,比如说“银鱼很棒,谢谢!”!发布这张图片很好,但我没有足够的点数。对于半透明点,如Stern graph中的半透明点,设置col=rgb(0,0,0,alpha=100,max=255),并使用alpha参数调整透明度。我尝试添加图片,但需要在网站上进行“同行评审”,然后才能公开。感谢BaseR中的示例!也许是因为我更熟悉ggplot2语法,我发现它更直观,不那么神秘。
x<-0.5+runif(100,-0.2,0.2)
y<-rbind(rnorm(100,1,1),rgamma(100,1,1),rbinom(100,1,0.5)*2+rnorm(100,0,0.2))
for (j in 0:2){
  if (j==0){plot(x,y[1,],xlim=c(0,4),ylim=c(-1,5),xlab="",ylab="Arbitrary Units",xaxt="n",bty="n",col="gray50")}
  else{points(x+j, y[j+1,],col="gray50")}
  points(j+0.9, mean(y[j+1,]),pch=19)
  arrows(j+0.9,mean(y[j+1,])-sd(y[j+1,]),j+0.9,mean(y[j+1,])+sd(y[j+1,]), angle=90,length=0)
  } # for j categories
axis(1,seq(0.5,2.5, by=1),tick=F,labels=c("Normal","Gamma","Bimodal"))