gpt4 book ai didi

r - 在 boxplot.ggplot2 中实现成对的线

转载 作者:行者123 更新时间:2023-12-01 04:15:43 25 4
gpt4 key购买 nike

我有一组配对数据,我使用 ggplot2.boxplot(easyGgplot2 包的)并添加了(抖动的)单个数据点:

ggplot2.boxplot(data=INdata,xName='condition',yName='vicarious_pain',groupName='condition',showLegend=FALSE,
position="dodge",
addDot=TRUE,dotSize=3,dotPosition=c("jitter", "jitter"),jitter=0.2,
ylim=c(0,100),
backgroundColor="white",xtitle="",ytitle="Pain intenstity",mainTitle="Pain intensity",
brewerPalette="Paired")

数据:
ID,condition,pain
1,Treatment,4.5
3,Treatment,12.5
4,Treatment,16
5,Treatment,61.75
6,Treatment,23.25
7,Treatment,5.75
8,Treatment,5.75
9,Treatment,5.75
10,Treatment,44.5
11,Treatment,7.25
12,Treatment,40.75
13,Treatment,17.25
14,Treatment,2.75
15,Treatment,15.5
16,Treatment,15
17,Treatment,25.75
18,Treatment,17
19,Treatment,26.5
20,Treatment,27
21,Treatment,37.75
22,Treatment,26.5
23,Treatment,15.5
25,Treatment,1.25
26,Treatment,5.75
27,Treatment,25
29,Treatment,7.5
1,No Treatment,34.5
3,No Treatment,46.5
4,No Treatment,34.5
5,No Treatment,34
6,No Treatment,65
7,No Treatment,35.5
8,No Treatment,48.5
9,No Treatment,35.5
10,No Treatment,54.5
11,No Treatment,7
12,No Treatment,39.5
13,No Treatment,23
14,No Treatment,11
15,No Treatment,34
16,No Treatment,15
17,No Treatment,43.5
18,No Treatment,39.5
19,No Treatment,73.5
20,No Treatment,28
21,No Treatment,12
22,No Treatment,30.5
23,No Treatment,33.5
25,No Treatment,20.5
26,No Treatment,14
27,No Treatment,49.5
29,No Treatment,7

结果图如下所示:

enter image description here

但是,由于这是配对数据,我想在图中表示这一点 - 特别是在配对数据点之间添加线。我试过添加
... + geom_line(aes(group = ID))

..但我无法将其实现到 ggplot2.boxplot 代码中。相反,我收到此错误:

Error in if (addMean) p <- p + stat_summary(fun.y = mean, geom = "point", : argument is not interpretable as logical In addition: Warning message: In if (addMean) p <- p + stat_summary(fun.y = mean, geom = "point", : the condition has length > 1 and only the first element will be used



感谢您对此的任何投入!

最佳答案

不知道从哪个包ggplot2.boxplot来自但我将向您展示如何在 ggplot 中执行请求的操作.
请求的输出对于 ggplot 来说有点问题因为您希望连接它们的点和线都抖动相同的量。执行此操作的一种方法是在绘制绘图之前抖动点。但是x轴是离散的,这是一种解决方法:

b <- runif(nrow(df), -0.1, 0.1)

ggplot(df) +
geom_boxplot(aes(x = as.numeric(condition), y = pain, group = condition))+
geom_point(aes(x = as.numeric(condition) + b, y = pain)) +
geom_line(aes(x = as.numeric(condition) + b, y = pain, group = ID)) +
scale_x_continuous(breaks = c(1,2), labels = c("No Treatment", "Treatment"))+
xlab("condition")
enter image description here
首先,我创建了一个名为 b 的抖动向量。 ,并转换 x轴到数字,所以我可以添加 bx轴坐标。后来我重新标记了 x 轴。
我同意 eipi10 的评论,即情节在没有抖动的情况下效果更好:
ggplot(df, aes(condition, pain)) +
geom_boxplot(width=0.3, size=1.5, fatten=1.5, colour="grey70") +
geom_point(colour="red", size=2, alpha=0.5) +
geom_line(aes(group=ID), colour="red", linetype="11") +
theme_classic()
enter image description here
以及带有抖动点 eipi10 样式的更新图:
ggplot(df) +
geom_boxplot(aes(x = as.numeric(condition),
y = pain,
group = condition),
width=0.3,
size=1.5,
fatten=1.5,
colour="grey70")+
geom_point(aes(x = as.numeric(condition) + b,
y = pain),
colour="red",
size=2,
alpha=0.5) +
geom_line(aes(x = as.numeric(condition) + b,
y = pain,
group = ID),
colour="red",
linetype="11") +
scale_x_continuous(breaks = c(1,2),
labels = c("No Treatment", "Treatment"),
expand = c(0.2,0.2))+
xlab("condition") +
theme_classic()
enter image description here

关于r - 在 boxplot.ggplot2 中实现成对的线,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49370705/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com