R:ggplot 有 6 个不同的组:有 5 条实线,一组有一条虚线
R: ggplot with 6 different groups: Have 5 solid lines and for one group a dashed line
我有以下数据:
structure(list(Date = c("01.08.2018", "02.08.2018", "03.08.2018",
"04.08.2018", "01.09.2018", "02.09.2018", "03.09.2018", "04.09.2018",
"01.08.2018", "02.08.2018", "03.08.2018", "04.08.2018", "01.09.2018",
"02.09.2018", "03.09.2018", "04.09.2018", "01.08.2018", "02.08.2018",
"03.08.2018", "04.08.2018", "01.09.2018", "02.09.2018", "03.09.2018",
"04.09.2018"), Return = c(0.1, 0.4, 0.6, 0.2, 0.5, 0.3, 0.2,
0.5, 0.2, 0.5, 0.2, 0.4, 0.5, -0.3, 1, -0.4, 0.4, 0.3, -0.3,
0.2, 0.1, 0.3, 0.5, 0.6), Rating = c(1L, 1L, 2L, 2L, NA, NA,
4L, 5L, 5L, 3L, 2L, NA, 2L, 1L, 1L, 1L, 2L, 2L, NA, 3L, 3L, 3L,
4L, 4L)), class = "data.frame", row.names = c(NA, -24L))
我想使用 ggplot 绘制 Y 轴为 Return、X 轴为日期的绘图。图中的线条应来自 6 个不同的评级(1、2、3、4、5 和 NA)。如何将 NA Rating 的线更改为虚线并保持 Ratings 1 到 5 的其他线为实线?
我试过以下方法:
ggplot(Data, aes(x=`Date`, y=`Return`, group=`Rating`, fill=`Rating`, color=`Rating`)) +
geom_line(size=1) +
scale_color_brewer(palette="Paired")
我的主要问题是如何获得评级为 NA 的组的虚线。我需要在代码中添加什么?
您可以将 Rating
放在 aes
的 linetype
中,然后使用 scale_linetype_manual
将 Na 设置为虚线:
Data <- Data %>%
mutate(Rating = fifelse(is.na(Rating),"NA",as.character(Rating)))
ggplot(Data, aes(x= Date, y= Return,group = Rating, color= Rating,linetype = Rating)) +
geom_line(size=1) +
scale_linetype_manual(breaks = c("NA",1:5),values = c("dashed",rep("solid",5)))
我有以下数据:
structure(list(Date = c("01.08.2018", "02.08.2018", "03.08.2018",
"04.08.2018", "01.09.2018", "02.09.2018", "03.09.2018", "04.09.2018",
"01.08.2018", "02.08.2018", "03.08.2018", "04.08.2018", "01.09.2018",
"02.09.2018", "03.09.2018", "04.09.2018", "01.08.2018", "02.08.2018",
"03.08.2018", "04.08.2018", "01.09.2018", "02.09.2018", "03.09.2018",
"04.09.2018"), Return = c(0.1, 0.4, 0.6, 0.2, 0.5, 0.3, 0.2,
0.5, 0.2, 0.5, 0.2, 0.4, 0.5, -0.3, 1, -0.4, 0.4, 0.3, -0.3,
0.2, 0.1, 0.3, 0.5, 0.6), Rating = c(1L, 1L, 2L, 2L, NA, NA,
4L, 5L, 5L, 3L, 2L, NA, 2L, 1L, 1L, 1L, 2L, 2L, NA, 3L, 3L, 3L,
4L, 4L)), class = "data.frame", row.names = c(NA, -24L))
我想使用 ggplot 绘制 Y 轴为 Return、X 轴为日期的绘图。图中的线条应来自 6 个不同的评级(1、2、3、4、5 和 NA)。如何将 NA Rating 的线更改为虚线并保持 Ratings 1 到 5 的其他线为实线?
我试过以下方法:
ggplot(Data, aes(x=`Date`, y=`Return`, group=`Rating`, fill=`Rating`, color=`Rating`)) +
geom_line(size=1) +
scale_color_brewer(palette="Paired")
我的主要问题是如何获得评级为 NA 的组的虚线。我需要在代码中添加什么?
您可以将 Rating
放在 aes
的 linetype
中,然后使用 scale_linetype_manual
将 Na 设置为虚线:
Data <- Data %>%
mutate(Rating = fifelse(is.na(Rating),"NA",as.character(Rating)))
ggplot(Data, aes(x= Date, y= Return,group = Rating, color= Rating,linetype = Rating)) +
geom_line(size=1) +
scale_linetype_manual(breaks = c("NA",1:5),values = c("dashed",rep("solid",5)))