r - 如何使用ggplot2使抖动点居中?

标签 r ggplot2 boxplot

我正在尝试重新创建一个多点图,如下图所示。
https://www.dropbox.com/s/9jqguesqd5gdm99/jitter%20plot.png

两者 geom_dotplot 位置抖动在ggplot2中已经尝试过了。但是这两个命令都无法做到。

position_jitter创建的图很相似,但也有一些不同。 position_jitter 创建的点,与上面提到的图相比,显得过于分散。

这是我目前能做出的图。
https://www.dropbox.com/s/athsgkjjrlwr15k/figure.png?dl=0
例如

value<-c(141573,  262616,   66773.8,    93032.2,    55528.8,    113125, 252954, 275581, 207854, 183300, 292946, 171510, 343565, 214436, 295871, 187196, 207352, 180356, 158110, 241769, 180112, 194007, 529168, 229267, 344257, 337311, 255109, 307389, 416108, 405033, 292260, 354368, 416811, 330420, 353017, 333997, 389285, 289870, 289224, 401641, 206481, 367379)
group<-factor(c(1,  1,  1,  1,  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,  2,  2))
quantile<-boxplot(value~group)
line<-quantile$stats
library(ggplot2)
gg<-ggplot()+geom_point(aes(x=group,y=value,color=group,fill=group),position=position_jitterdodge(jitter.width=0.3,dodge.width=0.7),size=4)+
geom_path(aes(x=c(0.8,1.2),y=c(line[3,1],line[3,1])),size=1)+geom_path(aes(x=c(1.8,2.2),y=c(line[3,2],line[3,2])),size=1)+geom_path(aes(x=c(0.9,0.9,1.1,1.1),y=c(line[2,1],line[2,1],line[2,1],line[2,1])),size=1.2)+geom_path(aes(x=c(0.9,0.9,1.1,1.1),y=c(line[4,1],line[4,1],line[4,1],line[4,1])),size=1.2)+geom_path(aes(x=c(1.9,1.9,2.1,2.1),y=c(line[2,2],line[2,2],line[2,2],line[2,2])),size=1.2)+geom_path(aes(x=c(1.9,1.9,2.1,2.1),y=c(line[4,2],line[4,2],line[4,2],line[4,2])),size=1.2)+geom_path(aes(x=c(1,1),y=c(line[2,1],line[4,1])),size=1.2)+geom_path(aes(x=c(2,2),y=c(line[2,2],line[4,2])),size=1.2)+
scale_colour_manual(name="",values = c("1"="#353F6B","2"="#994642"))+
theme_classic()+theme(legend.position="none")
gg

所以我的问题是:在 ggplot2 中使用 jitter 函数时,是否可以像第一个图一样使异常值居中。您建议采用什么样的方法来创建这种图形?

谢谢

最佳答案

在 ggplot2 中,“抖动”可在两个方向上进行配置,例如

data(mpg)
ggplot(mpg, aes(x=cyl, y=hwy, group=factor(cyl))) +
    geom_boxplot() +
    geom_jitter(position = position_jitter(height = .2, width = .2))

...看起来像这样:

geom_jitter 0.2

然而:
ggplot(mpg, aes(x=cyl, y=hwy, group=factor(cyl))) +
    geom_boxplot() +
    geom_jitter(position = position_jitter(height = .7, width = .7))

...有一种更“霰弹枪喷雾”的感觉:

geom_jitter 0.7

您能否通过调整 geom_jitter 中的位置参数来创建您正在寻找的效果?

关于r - 如何使用ggplot2使抖动点居中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26193434/

相关文章:

r - 如何创建矩阵单行的箱线图

r - 如何使用外部浮点变量在 sqldf 语句中进行乘法

r - 如何组合 aes() 和 aes_string() 选项

r - 将 y 轴转换为百分比 ggplot

r - 在 R 中组合分组和堆叠条形图

r - 在箱线图中绘制空组

r - 如何在 R 中重复序列但在重复时调整向量中的值?

R:使用带有权重的 reshape2::acast 聚合

r - 将具有第三个特征的大量点可视化为颜色 - 一种提高速度的方法

r - 循环为数据框中的变量生成绘图