2017-10-07 189 views
0

在r中是否有任何函数允许绘制这种散点图,这些散点图按组来分隔点?按r中的组绘制散点图

enter image description here

这是我迄今所做的:

hours = c(0.00 ,-1.78 ,-0.50 ,-2.00 ,-2.80 ,2.00 ,-0.16 ,-0.34 ,1.00 ,1.00 ,2.00 ,-1.34 ,-1.00 ,-1.10 ,-0.43 ,-0.49 ,-0.02 ,-0.91, 0.48 ,2.33 ,1.00 ,0.00 ,1.18 ,1.29 ,-1.07 ,-0.26 ,1.96 ,0.36 ,2.00 ,-0.63 ,-0.80 ,-0.70 ,-2.00 ,1.17 ,0.67 ,-3.00) 
group = c(1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2) 
df = data.frame(hours,group) 

ggplot(df, aes(group, hours)) + geom_point(shape = 16, size = 5, position = position_jitter(w=0.3,h=0.3)) 

但事实证明怪异:

enter image description here

任何帮助,非常感谢!

+1

什么是x轴?变体是否增加了抖动? – G5W

+1

你到目前为止尝试过什么?它通常皱起眉头张贴一张图的图片,并说“请为我做这件事”。你应该看看[制作一个代表例子](https://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example) – tbradley

+0

我曾尝试使用ggplot2并使用抖动,但它并不是我想要的样子。 – TYL

回答

1

下面是使用汽车数据

library(tidyverse) 
library(ggplot2) 
data(cars) 

cars %>% 
    gather(variable, value) %>% 
    ggplot()+ 
    geom_jitter(aes(x = variable, y = value), width = 0.2, height = 0)+ 
    geom_errorbar(data = cars %>% 
      gather(variable, value) %>% 
      group_by(variable) %>% 
      summarise(value = mean(value)), aes(x = variable, ymin= value, ymax = value))+ 
    geom_hline(aes(yintercept = mean(value)), lty = 2)+ 
    theme_bw() 

enter image description here

只需发布数据的方法:

ggplot(df)+ 
    geom_jitter(aes(x = as.factor(group), y = hours), width = 0.2, height = 0)+ 
    geom_errorbar(data = df%>% 
        group_by(group) %>% 
        summarise(hours = mean(hours)), aes(x = group, ymin= hours, ymax = hours))+ 
    geom_hline(aes(yintercept = mean(hours)), lty = 2)+ 
    theme_bw() 

enter image description here

+0

嗨,有没有简化geom_errorbar代码的方法?我一直试图理解它一段时间来调整它。 – TYL

+0

'geom_errorbar'通过设置'ymin == ymax','geom_errorbar'产生一行,输入'x','ymin','ymax'和其他一些美学。这里的数据只是按照小组小时计算的平均值,通过'df%>%group_by(group)%>%summarize(小时=平均值(小时))计算''您可以在绘图之前计算并存储在一个对象中(如'df_mean' ),只需调用该对象'data = df_mean'。如果你对tidyverse不满意,你可以使用'aggregate'来完成这样的任务。 'df_mean = aggregates(hours〜group,data = df,mean)'并在调用'geom_errorbar'时使用这些数据。 – missuse