我有一个包含3个因子(condition
,measure
和time
)的数据库,并希望使用x轴,颜色/组和线型对其进行绘制。
例如,我的数据如下:
DT <- data.frame(condition = rep(c("control", "experimental"), each = 4),
measure = rep(c("A", "A", "B", "B"), 2),
time = rep(c("pre-test", "post-test"), 4),
score = 1:8)
> DT
condition measure time score
1 control A pre-test 1
2 control A post-test 2
3 control B pre-test 3
4 control B post-test 4
5 experimental A pre-test 5
6 experimental A post-test 6
7 experimental B pre-test 7
8 experimental B post-test 8
我的目标是绘制这样的图形:
我尝试过:
ggplot(DT, aes(time, score, group = measure, color = measure, linetype = condition)) +
geom_line() +
geom_point()
但是它返回此错误:
Error: geom_path: If you are using dotted or dashed lines, colour, size and linetype must be constant over the line
我想念什么?
答案 0 :(得分:7)
您要使用
ggplot(DT, aes(time, score, group = interaction(measure, condition),
color = measure, linetype = condition)) +
geom_line() + geom_point()
因为实际分组不仅取决于measure
,而且取决于condition
。当单独按measure
分组时,我想这是在问一种平行四边形而不是线。
答案 1 :(得分:4)
data.frame(
condition = rep(c("control", "experimental"), each = 4),
measure = rep(c("A", "A", "B", "B"), 2),
time = rep(c("pre-test", "post-test"), 4),
score = 1:8
) -> DT
DT_wide <- tidyr::spread(DT, time, score)
ggplot() +
geom_segment(
data = DT_wide,
aes(
x = "pre-test", xend = "post-test",
y = `pre-test`, yend = `post-test`,
color = measure,
linetype = condition
)
) +
geom_point(
data = DT,
aes(time, score, color = measure)
)