问题描述
我指的不是实线、点线、虚线等标准选项。我想创建自定义线型,例如 (..--..--..) 和 (---... ---...---).
请在下面找到我开发的代码和我生成的图表。请注意,我有 10 个子数据集用于生成组合折线图。
ggplot() +
geom_line(data = datav2_MH,aes(x = date,y = MH,linetype = "MH"),colour = "black",size = 1,group = 1) +
geom_line(data = datav2_AP,y = AP,linetype = "AP"),group = 1) +
geom_line(data = datav2_TN,y = TN,linetype = "TN"),group = 1) +
geom_line(data = datav2_KN,y = KN,linetype = "KN"),group = 1) +
geom_line(data = datav2_UP,y = UP,linetype = "UP"),group = 1) +
geom_line(data = datav2_DL,y = DL,linetype = "DL"),colour = "grey",group = 1) +
geom_line(data = datav2_WB,y = WB,linetype = "WB"),group = 1) +
geom_line(data = datav2_KR,y = KR,linetype = "KR"),group = 1) +
geom_line(data = datav2_OD,y = OD,linetype = "OD"),group = 1) +
geom_line(data = datav2_RJ,y = RJ,linetype = "RJ"),group = 1) +
guides(fill = guide_legend(keywidth = 1,keyheight = 1),linetype=guide_legend(keywidth = 2.5,keyheight = 1))+
scale_linetype_manual(values = c(
'MH' = 1,"AP" = 2,"TN" = 3,"KN" = 4,'UP' = 5,"DL" = 6,"WB" = 1,'KR' = 2,"OD" = 3,"RJ" = 4))+
geom_dl(data = datav2_MH,label = "MH"),method = "top.qp",cex = 0.2) +
geom_dl(data = datav2_AP,label = "AP"),cex = 0.2) +
geom_dl(data = datav2_TN,label = "TN"),cex = 0.2) +
geom_dl(data = datav2_KN,label = "KN"),cex = 0.2) +
geom_dl(data = datav2_DL,label = "DL"),cex = 0.2) +
geom_dl(data = datav2_UP,label = "UP"),cex = 0.2) +
geom_dl(data = datav2_WB,label = "WB"),cex = 0.2) +
geom_dl(data = datav2_KR,label = "KR"),cex = 0.2) +
geom_dl(data = datav2_OD,label = "OD"),cex = 0.2) +
geom_dl(data = datav2_RJ,label = "RJ"),cex = 0.2) +
theme(plot.title = element_text(hjust = 0.5)) +
theme(legend.position = "top") +
theme(plot.margin = unit(c(1,1,1),"cm")) +
xlab("Date") +
ylab("Total_Confirmed_Cases") +
scale_y_continuous() +
scale_x_discrete(breaks = c("2020-03-31","2020-04-30","2020-05-31","2020-06-30","2020-07-31","2020-08-31","2020-09-30","2020-10-31","2020-11-30","2020-12-31","2021-01-31")) +
theme(axis.text.x = element_text(angle = 45,hjust = 1))
The chart containing a line for 10 states. The data is at a daily level
解决方法
如果您想手动指定线型,可以使用 scale_linetype_manual()
来完成。对于 values
参数,您可以给出具有偶数个(十六进制)数字的字符向量。第一个数字是划线长度,第二个数字是间隙长度。例如,"1234"
将给出大小为 1 的短划线、大小为 2 的间隙、大小为 3 的短划线和大小为 4 的间隙,这些都会重复。为简洁起见,我在下面的示例中使用了不同的数据。
library(ggplot2)
#> Warning: package 'ggplot2' was built under R version 4.0.3
df <- DNase[!duplicated(DNase[,c("Run","conc")]),]
ggplot(df,aes(conc,density,linetype = Run)) +
geom_line() +
scale_linetype_manual(values = c(
"12","34","41","F2","11","21","1141","2134","7171","1717","4243"
))