I have this simple plot where I cannot change the linetype in the legend according to the linetype in the plot using scale_linetype_manual.
The code to produce the plot is :
library(ggplot2)
x_1 <- rep(0:6, each = 2)
pdf_1 <- c(0,0.05,0.05,0.1,0.1,0.15,0.15,0.3,0.3,0.25,0.25,0.15,0.15,0)
x_2 <- rep(3:9, each = 2)
pdf_2 <- c(0,0.05,0.05,0.1,0.1,0.15,0.15,0.3,0.3,0.25,0.25,0.15,0.15,0)
data_1 <- data.frame(x_1, pdf_1,x_2,pdf_2)
ggplot()+
geom_line(data=data_1,aes(x=x_1, y=pdf_1, color="Forecaster_1"),linetype='solid',size=1)+
geom_line(data=data_1,aes(x=x_2, y=pdf_2, color="Forecaster_2"),linetype='dashed',size=1)+
labs(x = "x") +
labs(y = "PDF") +
scale_colour_manual(values = c('Forecaster_1' = 'cornflowerblue', 'Forecaster_2' = 'coral2')) +
scale_linetype_manual(values = c('Forecaster_1' = 'solid', 'Forecaster_2' = 'dashed'))
I would appreciate someone help me with this.
It would be better if you mapped the line type as an aethetic and then make sure you use the same name for both guides. For example
ggplot()+
geom_line(data=data_1,aes(x=x_1, y=pdf_1, color="Forecaster_1", linetype='Forecaster_1'),size=1)+
geom_line(data=data_1,aes(x=x_2, y=pdf_2, color="Forecaster_2", linetype='Forecaster_2'),size=1)+
labs(x = "x") +
labs(y = "PDF") +
scale_colour_manual("Line", values = c('Forecaster_1' = 'cornflowerblue', 'Forecaster_2' = 'coral2')) +
scale_linetype_manual("Line", values = c('Forecaster_1' = 'solid', 'Forecaster_2' = 'dashed'))
You could override the default legend like so:
ggplot() +
geom_line(
data = data_1,
aes(
x = x_1,
y = pdf_1,
color = "Forecaster_1"
),
linetype = 'solid',
size = 1
) +
geom_line(
data = data_1,
aes(
x = x_2,
y = pdf_2,
color = "Forecaster_2"
),
linetype = 'dashed',
size = 1
) +
labs(x = "x") +
labs(y = "PDF") +
scale_colour_manual(
values = c('Forecaster_1' = 'cornflowerblue', 'Forecaster_2' = 'coral2'),
guide = guide_legend(
override.aes = list(
linetype = c("solid", "dotted")
)
)
)
linetype
can be replaced with any of the values listed here .
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.