r / sciplot: накладывающиеся усы в lineplot.CI
При построении графика взаимодействия с использованием lineplot.CI в библиотеке sciplot полосы ошибок могут перекрываться между группами. Например,
data = c(1,5,3,7,3,7,5,9)
grp1 = c(1,1,1,1,2,2,2,2)
grp2 = c(1,1,2,2,1,1,2,2)
lineplot.CI(grp1, data, grp2)
Группы можно разделить вдоль оси x, добавив джиттер к переменной группировки и установив значение x. cont равным TRUE, но это приведет к исчезновению линий на графике:
data = c(1,5,3,7,3,7,5,9)
grp1 = c(1,1,1,1,2,2,2,2) + c(-0.05, -0.05, 0.05, 0.05, -0.05, -0.05, 0.05, 0.05)
grp2 = c(1,1,2,2,1,1,2,2)
lineplot.CI(grp1, data, grp2, x.cont=TRUE)
Можно ли заставить линии появляться и дрожать точки, чтобы полосы ошибок не перекрывались? Или есть лучший способ сделать такой сюжет?
1 ответ:
Для этого можно использовать ggplot2. Вот пример со встроенным набором данных (так как у меня нет ваших стандартных ошибок или CIs). Ключ заключается в использовании
position_dodge()
.ToothGrowth$dose.cat <- factor(ToothGrowth$dose, labels=paste("d", 1:3, sep="")) df <- with(ToothGrowth , aggregate(len, list(supp=supp, dose=dose.cat), mean)) df$se <- with(ToothGrowth , aggregate(len, list(supp=supp, dose=dose.cat), function(x) sd(x)/sqrt(10)))[,3] opar <- theme_update(panel.grid.major = theme_blank(), panel.grid.minor = theme_blank(), panel.background = theme_rect(colour = "black")) xgap <- position_dodge(0.2) gp <- ggplot(df, aes(x=dose, y=x, colour=supp, group=supp)) gp + geom_line(aes(linetype=supp), size=.6, position=xgap) + geom_point(aes(shape=supp), size=3, position=xgap) + geom_errorbar(aes(ymax=x+se, ymin=x-se), width=.1, position=xgap) theme_set(opar)