我有一个如下所示的df,我想生成一个图:
df<-structure(list(AVAL = c(36.9, 37.2, 36.5, 36.7222222222222, 36.9,
36.9, 36.9, 37.2, 36.9), ADY = c(-9, -1, 1, 8, 15, 15, 15, 22,
35), PARAMCD = structure(c(1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L
), .Label = "VSTEMP", class = "factor"), Flag = c(NA, NA, NA,
8, 15, 15, 15, 22, NA), AESER = c(NA, NA, NA, "N", "N", "N",
"N", "Y", NA)), row.names = 546:554, class = "data.frame")
ggplot(data =df)+
geom_line(data=df[!is.na(df$AVAL),],aes(x = ADY, y = AVAL, color = PARAMCD, yaxs="d", xaxs="d"),size=0.8)+
geom_point(data=df[!is.na(df$AVAL),], aes(x = ADY, y = AVAL))+
geom_vline(aes(xintercept=Flag, color=AESER),lty='dashed')我的图如下所示:

我想知道是否可以将垂直线定义为black for AESER=="N", and red for AESER=="Y"?另外,对于图例,是否可以只显示垂直线?或者是呈现图例的更好方式,可能是一个块用于度量项目VSTERM,然后另一个块用于AESER: Y|N?有人能在这方面给我指点一下吗?谢谢。
发布于 2021-10-05 19:59:51
选项1:
如果垂直线和geom_line Y/N/VSTEMP的单个图例就足够了,则应该这样做:
ggplot(data =df[!is.na(df$AVAL),], aes(x = ADY, y = AVAL))+
geom_line(aes(color = 'PARAMCD')), size=0.8) +
geom_point() +
geom_vline(aes(xintercept=Flag, color=AESER), lty='dashed') +
scale_color_manual(name = "legend_name", values = c(N = "black", Y = "red", VSTEMP = "green")) 选项2:
在垂直线Y/N的单个图例的情况下
ggplot(data =df[!is.na(df$AVAL),], aes(x = ADY, y = AVAL))+
geom_line(color='green', size=0.8)+
geom_point()+
geom_vline(aes(xintercept=Flag, color=AESER), lty='dashed') +
scale_color_manual(name = "legend_name", values = c(N = "black", Y = "red")) 输出:

发布于 2021-10-05 20:10:34
这是一种方法。在绘图中添加具有所需颜色的scale_color_manual。
library(ggplot2)
ggplot(data = df[!is.na(df$AVAL), ], aes(x = ADY, y = AVAL)) +
geom_line(aes(color = PARAMCD), size = 0.8) +
geom_point() +
geom_vline(aes(xintercept = Flag, color = AESER),
linetype = 'dashed') +
scale_color_manual(values = c("N" = "black", "Y" = "red", "VSTEMP" = "green"))

编辑
绘图以在注释中回答请求,图例中仅显示AESER。
ggplot(data = df[!is.na(df$AVAL), ], aes(x = ADY, y = AVAL)) +
geom_line(color = "green", size = 0.8) +
geom_point() +
geom_vline(aes(xintercept = Flag, color = AESER), linetype = 'dashed') +
scale_color_manual(name = "AESER", values = c("N" = "black", "Y" = "red"))https://stackoverflow.com/questions/69456029
复制相似问题