如何移除ggplot绘制图表右侧的红色竖线?
解决ggplot图表右侧出现红色竖线的问题
首先咱们得搞清楚这条红色竖线的来源——它肯定是来自你那根红色的geom_line(data = data),大概率是因为data数据集的时间范围超出了主数据集model.1的x轴(time)范围,或者data的最后一行数据和前一行的时间不连续,导致ggplot在x轴最右侧画了一条垂直的线。
这里给你几个实用的解决办法:
截断
data的时间范围,和主数据集保持一致
如果你只需要红色线条在model.1的time范围内展示,可以用dplyr过滤data:library(dplyr) # 修剪data的time范围,和model.1匹配 data_trimmed <- data %>% filter(time >= min(model.1$time) & time <= max(model.1$time)) # 替换原代码中的data为data_trimmed ggplot(model.1, aes(x = time, y = activity)) + geom_line(aes(group = id), alpha = .3) + geom_line(data = data_trimmed, alpha = .9, size = 1, colour="red4") + theme(panel.background = element_blank(),axis.line=element_line(colour="black"))+ scale_x_continuous(expand=c(0,0)) + theme(axis.line = element_line(colour = "black"), panel.grid.major = element_blank())排除
data的最后一个数据点
如果竖线是因为data的最后一个点没有后续数据导致的,直接去掉最后一行就行:ggplot(model.1, aes(x = time, y = activity)) + geom_line(aes(group = id), alpha = .3) + # 排除data的最后一行 geom_line(data = data[-nrow(data), ], alpha = .9, size = 1, colour="red4") + theme(panel.background = element_blank(),axis.line=element_line(colour="black"))+ scale_x_continuous(expand=c(0,0)) + theme(axis.line = element_line(colour = "black"), panel.grid.major = element_blank())手动固定x轴的范围
直接把x轴的上下限设为model.1的time范围,这样即使data有超出的点也不会显示:ggplot(model.1, aes(x = time, y = activity)) + geom_line(aes(group = id), alpha = .3) + geom_line(data = data, alpha = .9, size = 1, colour="red4") + theme(panel.background = element_blank(),axis.line=element_line(colour="black"))+ scale_x_continuous(expand=c(0,0), limits = c(min(model.1$time), max(model.1$time))) + theme(axis.line = element_line(colour = "black"), panel.grid.major = element_blank())
你可以根据自己的实际数据情况选其中一种方法试试,应该就能解决这个问题啦。
内容的提问来源于stack exchange,提问作者OCT
相关产品推荐
相关产品推荐

