问题
Is there any function in r that allows the plotting of this kind of scatter plots, which separates the dots by group?
Here is what I have done so far:
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))
But it turns out weird:
Any help is really appreciated!
回答1:
Here is an approach using cars data
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()
With just posted data:
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()
来源:https://stackoverflow.com/questions/46619838/plotting-scatter-plot-by-groups-in-r