繁体   English   中英

ggplot2:组合组,颜色和线型

[英]ggplot2: Combining group, color and linetype

我有一个包含3个因素( conditionmeasuretime )的数据库,并希望使用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

我错过了什么?

你想用

ggplot(DT, aes(time, score, group = interaction(measure, condition), 
               color = measure, linetype = condition)) +
  geom_line() + geom_point()

在此输入图像描述

因为实际的分组不仅是通过measure而且是通过condition 当单独按measure分组时,我猜它要求的是平行四边形而不是线条。

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)
  )

在此输入图像描述

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM