我正在努力获得 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()
最佳答案
据我所知,您遇到了 3 个问题。
linetype
中没有下划线。- 对于分类轴,您需要使用
group
美感来设置连接哪些线。您已从group = condition
开始,但这意味着每种条件类型各占一行(2 行),但您希望每种条件占一行:治疗交互作用 (2 * 2 = 4行),因此您需要group = interaction(condition,treatment)
。 - 您的示例数据不太有意义。您的条件
B
值在时间 1 处有两个处理C
,在时间 2 处有两个处理D
,因此时间 1 和时间之间没有联系2. 这并不重要,您的真实数据可能没问题。
这应该有效:
ggplot(
example_df,
aes(
x = reorder(time, time_order),
y = value,
color = condition,
linetype = treatment,
group = interaction(condition, treatment)
)
) +
geom_line()
关于r - 生成 R ggplot 线图,其颜色/类型以不同变量为条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48504635/