我很难获得ggplot线图所需的确切输出。例如,请参阅下面的代码。总的来说,我有两个条件(A / B)和两个治疗(C / D)。所以四个系列,但是以一种因子的方式。这些行可以被视为时间序列,但带有序数标记(而不是数字)。
我想为四种类型生成连通线图,颜色取决于条件,线型取决于处理。因此有两种不同的颜色和两种线型。为了使事情变得复杂一点,一个条件(B)没有第三个时间段的数据。
我似乎无法生成这些约束所需的图形。我得到的最接近的如下所示。我做错了什么?我尝试删除group =条件代码,但这也无济于事。
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()
答案 0 :(得分:3)
据我所知,你有3个问题。
linetype
并没有下划线。group
美学来设置哪些线连接。您已经开始使用group = conidition
,但这意味着每个条件类型都有一行(2行),但是您希望每个条件都有一行:treamtment interaction(2 * 2 = 4行),所以你需要group = interaction(condition, treatment)
。B
值在时间1处有两个处理C
,在时间2处有两个D
s,因此在时间1和2之间没有连接。这不是很多问题,你的真实数据可能很好。这应该有效:
ggplot(
example_df,
aes(
x = reorder(time, time_order),
y = value,
color = condition ,
linetype = treatment,
group = interaction(condition, treatment)
)
) +
geom_line()