我正在一对轴上绘制多个时间序列。该系列涵盖了一系列时间范围-例如有些涵盖一年,有些只有几个月。我希望结果图表在每个系列中绘制一条线,而每条线仅在该系列涵盖的时间范围内可见。
图表后面的数据是数据框(meltdf2
)的格式,具有4列-月,用户,得分和风险。
一个简化的版本是:
Month user score risk
jan-18 A 1 high
feb-18 A 1 high
mar-18 A 2 mid
apr-18 A 1 high
feb-18 B 1 high
mar-18 B 2 mid
apr-18 B 3 low
mar-18 C 3 low
apr-18 C 3 low
当前,图表显示三行,每位用户一条,每行覆盖整个图表。
理想情况下,我将有一个带有行A
的图表将跨越图表的整个宽度,而行B
和C
则将仅覆盖图表的一部分。
我尝试将B
和C
未涵盖的月份的NA值包括在内,但它们的线仍覆盖整个图表。无法使用NA值路由,我尝试在一行上手动设置多种颜色,但这似乎不起作用。
我正在使用的当前代码如下:
#create colour palette based on discrete risk levels - used to specify manual colour scale in plot.
pal <- c("High"="red2","Mid"="gold","Low" = "limegreen","NA"= "NA")
#create plot with line and points.
#colour of points based on colour column of meltdf2
ggplot(data = meltdf2, aes(x = Month, y = user, group = user)) +
geom_line(linetype = "dashed", colour = "grey") +
geom_point(aes(colour = meltdf2$risk, size = 3)) +
scale_colour_manual(values = pal, limits = names(pal)) +
scale_x_date(date_breaks = "1 month" , date_labels = "%b-%y") +
theme(axis.title.y=element_blank(), axis.text.y=element_blank(), axis.ticks.y=element_blank(),
axis.line.x = element_line(colour = "darkgrey"),
panel.background = element_rect(fill = "white"),
panel.grid.major = element_blank(), panel.grid.minor = element_blank())
此代码产生以下图表:
理想情况下,每个系列的第一个数据点之前的每条虚线灰色部分都不会显示。