我有一个分组条形图(两个条件,每个条件有两组)。 我在创建组条形图时没有遇到问题,但我有兴趣将各个数据点放在图上并用一条线将它们连接起来。 更具体地说,这些线应该在条件内连接,因此条件 1 组 1 中的数据点连接到条件 1 组 2 中的相应数据点。如果不使用facet_wrap,我找不到方法来做到这一点。
我已经看到这里建议使用facet_wrap,但是当专门使用拼凑时,它会影响绘图的对齐。 我提供了一些条形图的代码和生成facet_wrap图的代码。
我愿意接受任何不使用facet_wrap的建议。 我希望有一种方法可以直接使用
geom_line(aes(subject))
来完成此操作,但这似乎没有正确分组。
代码
df <- data.frame(
Subject = c(1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3),
Condition = c(“A”, “A”, “B”, “B”, “A”, “A”, “B”, “B”, “A”, “A”, “B”, “B”),
Group = c(“group1”, “group2", “group1”, “group2",
“group1”, “group2", “group1”, “group2",
“group1”, “group2", “group1”, “group2"),
Value = c(10, 7, 8, 9, 11, 12, 13, 2, 2, 3, 4, 5))
所需的外观(不包括连接的数据点)
ggplot(df, aes(x=Condition, y=Value, fill=Group)) +
stat_summary(fun.data = mean_sdl, geom = ‘bar’, position = ‘dodge’) +
stat_summary(fun.data = mean_se, geom = ‘errorbar’, width = 0.2,
position = position_dodge(width = 0.9)) +
theme_minimal()
连接的数据点(使用不需要的方面)
ggplot(df, aes(x=Group, y=Value, fill=Group)) +
stat_summary(fun.data = mean_sdl, geom = ‘bar’, position = ‘dodge’) +
stat_summary(fun.data = mean_se, geom = ‘errorbar’, width = 0.2,
position = position_dodge(width = 0.9)) +
theme_minimal() +
geom_line(aes(group = Subject), alpha = 0.2, position = position_nudge(c(.14, -.14))) +
facet_wrap(~Condition)
以下是小面如何影响拼接中对齐的示例(右图)。因为它假设应该有一个轴标题,所以一切都未对齐。
您在
geom_line()
中的群体审美需要结合 Subject
和 Condition
信息,才能在不分面的情况下发挥作用。尝试以下解决方案(我还反转了 position_nudge()
调用中的符号,因为它们实际上反转了您的数据点,并且添加了参数 nudgeAmount
来轻松控制微移和 geom_point()
调用,以便您可以看到实际数据点在哪里):
nudgeAmount <- 0.14
ggplot(df, aes(x = Condition, y = Value, fill = Group)) +
stat_summary(fun.data = mean_sdl, geom = "bar", position = "dodge") +
stat_summary(fun.data = mean_se, geom = "errorbar", width = 0.2, position = position_dodge(width = 0.9)) +
geom_point(shape = 21, position = position_nudge(nudgeAmount*c(-1,1))) +
geom_line(aes(group = paste(Subject,Condition)), alpha = 0.2, position = position_nudge(nudgeAmount*c(-1,1))) +
theme_minimal()