【问题标题】:Generating R ggplot line graph with color/type conditional on different variables根据不同的变量生成颜色/类型的 R ggplot 折线图
【发布时间】:2018-01-29 15:26:34
【问题描述】:

我正在努力获得 ggplot 折线图所需的准确输出。例如,请参见下面的代码。总的来说,我有两种情况(A/B)和两种治疗方法(C/D)。所以总共有四个系列,但是以阶乘的方式。这些线可以被视为一个时间序列,但带有序号标记(而不是数字)。

我想为四种类型生成一个连接线图,其中颜色取决于条件,线型取决于治疗。因此有两种不同的颜色和两种线型。为了使事情更复杂一点,一个条件(B)没有第三个时间段的数据。

我似乎无法生成这些约束所需的图表。我得到的最接近如下所示。我做错了什么?我尝试删除 group=condition 代码,但这也无济于事。

library(ggplot2)
set.seed<-1
example_df <- data.frame(time =         c('time1','time2','time3','time1','time2','time3','time1','time2','time1','time2'),
                     time_order = c(1,2,3,1,2,3,1,2,1,2),
                    condition = c('A','A','A','A','A','A','B','B','B','B'),
                    treatment = c('C','C','C','D','D','D','C','C','D','D'),
                    value = runif(10))


ggplot(example_df, aes(x=reorder(time,time_order), y=value, color=condition , line_type=treatment, group=condition)) + 
  geom_line()

【问题讨论】:

  • 我不明白您要绘制什么,因为您有不同的观察结果:B ~ C 在时间 1 和 B ~ D 在时间 2。这些测量是相关的,无法连接(geom_line) 在这里不起作用。
  • @PoGibas 工作正常,只是没有多大意义。可能只是作为一个很好的例子的一个错字。
  • 抱歉,这个问题已经解决了。

标签: r ggplot2


【解决方案1】:

据我所知,你有 3 个问题。

  1. linetype 中没有下划线。
  2. 使用分类轴,您需要使用group 美学来设置连接哪些线。您已经从group = condition 开始,但这意味着每种条件类型有一行(2 行),但您希望每个条件有一行:处理交互(2 * 2 = 4 行),所以您需要@ 987654326@.
  3. 您的示例数据不太合理。您的条件B 值在时间 1 有两个处理 Cs 和两个 Ds 在时间 2,因此时间 1 和 2 之间没有任何联系。这无关紧要,您的真实数据可能是很好。

这应该可行:

ggplot(
  example_df,
  aes(
    x = reorder(time, time_order),
    y = value,
    color = condition,
    linetype = treatment,
    group = interaction(condition, treatment)
  )
) +
  geom_line()

【讨论】:

  • 格雷戈,谢谢!!这适用于真实数据,并且正如您所提到的错误是由于虚构的示例。我缺少的重要项目是交互项。
猜你喜欢
  • 2020-03-28
  • 1970-01-01
  • 2020-08-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-12-31
  • 2021-01-31
  • 2019-12-10
相关资源
最近更新 更多