我正在尝试使用 ggplot2
与 geom_line()
和 geom_point()
绘制来自因子实验的4向交互 .
我正在使用的数据是 emmeans()
对象,其边际均值来自线性混合效应模型 .
我可以通过 emmip()
得到的图表是这样的:
我想要的是将 b:c
交互分开,以便一个因子由颜色和/或点类型定义,另一个因子由线型定义(虚线与实体)
一个最小的例子是这样的:
df<- data.frame(y=rnorm(n=16),
a=gl(2,4,16, labels=c("a1","a2")),
b=gl(2,2,16, labels=c("b1", "b2")),
c=gl(2,1,16, labels=c("c1", "c2")),
fac=gl(2,8,16, labels=c("panel1", "panel2")))
我尝试了以下 ggplot()
代码:
ggplot(df, aes(y=y, x=a, color=b)) +
geom_point(aes(shape=b), size=3) +
geom_line(aes(linetype=c)) +
facet_wrap(~fac)
但我得到一个警告,我不知道如何处理:
geom_path: Each group consists of only one observation. Do you need to adjust the group aesthetic?
geom_path: Each group consists of only one observation. Do you need to adjust the group aesthetic?
图表看起来几乎与预期一致,但没有在相应的 b
点之间绘制 c
因子水平线:
How can I fix this?
我发现了一个类似的问题直接处理来自 lmer()
对象的预测值:How to plot mixed-effects model estimates in ggplot2 in R?但仍无法找到处理我的数据格式的方法 .
2 回答
在Z.Lin comment above之后我找到了我想要的东西:
您的示例的一个问题是您对变量b使用颜色和形状美学 . 我建议选择一个并保存另一个变量c而不是使用行 . 一般来说,使用线条对连续变量和趋势有意义 . 您可以使用以下之一: