与由颜色和线型定义的 ggplot2 线和点的 4 向交互
4-way interaction with ggplot2 lines and points defined by color and linetype
我正在尝试使用 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?
并且该图看起来 几乎 符合预期,但没有 c
因子在对应的 b
点之间绘制水平线:
我该如何解决这个问题?
我发现了一个直接处理来自 lmer()
对象的预测值的类似问题: 但仍然找不到处理我的数据格式的方法。
您的示例的一个问题是您对变量 b 同时使用了颜色和形状美学。我建议选择一个并将另一个保存为变量 c 而不是使用行。一般来说,使用线对连续变量和趋势有意义。您可以使用以下其中一项:
# colored by b & shaped by c
ggplot(df, aes(y=y, x=a, color=b)) +
geom_point(aes(shape=c), size=3) +
facet_wrap(~fac)
# colored by c & shaped by b
ggplot(df, aes(y=y, x=a, color=c)) +
geom_point(aes(shape=b), size=3) +
facet_wrap(~fac)
关注 我找到了我要找的东西:
ggplot(df, aes(y=y, x=a)) +
geom_point(aes(color=b),size=3) +
geom_line(aes(group = b:c, color=b, linetype=c), size=1) +
facet_wrap(~fac)
我正在尝试使用 ggplot2
与 geom_line()
和 geom_point()
.
我正在处理的数据是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?
并且该图看起来 几乎 符合预期,但没有 c
因子在对应的 b
点之间绘制水平线:
我该如何解决这个问题?
我发现了一个直接处理来自 lmer()
对象的预测值的类似问题:
您的示例的一个问题是您对变量 b 同时使用了颜色和形状美学。我建议选择一个并将另一个保存为变量 c 而不是使用行。一般来说,使用线对连续变量和趋势有意义。您可以使用以下其中一项:
# colored by b & shaped by c
ggplot(df, aes(y=y, x=a, color=b)) +
geom_point(aes(shape=c), size=3) +
facet_wrap(~fac)
# colored by c & shaped by b
ggplot(df, aes(y=y, x=a, color=c)) +
geom_point(aes(shape=b), size=3) +
facet_wrap(~fac)
关注
ggplot(df, aes(y=y, x=a)) +
geom_point(aes(color=b),size=3) +
geom_line(aes(group = b:c, color=b, linetype=c), size=1) +
facet_wrap(~fac)