![](/img/trans.png)
[英]ggplot2 - align overlayed points in center of boxplot, and connect the points with lines
[英]Join data points on boxplot with lines ggplot2
我正在尝试在以下图表上可视化成对的数据点集:
ggplot(grid.mag.ROIcontrols.allRuns, aes(Model,Grid_Magnitude)) +
geom_boxplot(aes(fill=Model),outlier.shape = NA,alpha=0.6) +
geom_point(aes(fill=Model),size=2,shape=21,position=position_jitterdodge(0.2)) +
geom_line(aes(group=Side)) +
facet_grid(~Side,scales = "free") +
scale_fill_brewer(palette="GnBu") +
labs(title = "Average Grid Magnitude, pm vs al EC")
线连接alLeft6
/ pmLeft6
和alRight6
/ pmRight6
之间的点。
但是,带有我需要的组变量的geom_line
不起作用 - 当我需要为 10 对中的每一对设置一条水平线时,它会在数据点之间添加垂直线和一条水平线。
没有geom_line
:
使用geom_line
:
PS:对不起,我不知道如何分享原始数据......
如果没有实际数据,很难为您提供深入的帮助,如评论中所述,请参阅此站点以获取可重现示例的指南。
我假设您想将 alLeft6 中的一个数据点与 pmLeft6 中的一个数据点进行比较(否则水平线将毫无意义)。 这表明您的数据中有一些列将这些点链接在一起(示例数据中的Pairs
)。
使用geom_line()
数据,这就像将geom_line()
分组变量设置为此列 ( Pairs
) 一样简单。 要对齐geom_point()
与geom_line()
与抖动的简单的解决方案是定义ggplot调用(这里称为前偏移pd
)。
library(tidyverse)
grid.mag.ROIcontrols.allRuns = tibble(Model = c(rep("alLeft6", 10),rep("pmLeft6", 10),rep("alRight6", 10),rep("pmRight6", 10)),
Grid_Magnitude = c(runif(10, -1, 1),runif(10, -0.5, 1.5), runif(10, -1, 1),runif(10, -1.5, 0.5)),
Side = c(rep("Left", 20), rep("Right", 20)),
Pair = c(rep(1:10, 2), rep(11:20, 2))
) %>%
mutate(Pair = as.factor(Pair))
pd <- position_dodge(0.2)
ggplot(grid.mag.ROIcontrols.allRuns, aes(Model,Grid_Magnitude)) +
geom_boxplot(aes(fill=Model),outlier.shape = NA,alpha=0.6) +
geom_line(aes(group=Pair), position = pd) +
geom_point(aes(fill=Model,group=Pair),size=2,shape=21, position = pd) +
facet_grid(~Side,scales = "free") +
scale_fill_brewer(palette="GnBu") +
labs(title = "Average Grid Magnitude, pm vs al EC")
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.