自定义图表 R ggplot 中的线型?我的问题涉及在黑白图表中绘制 10 个类别

问题描述

我指的不是实线、点线、虚线等标准选项。我想创建自定义线型,例如 (..--..--..) 和 (---... ---...---).

请在下面找到我开发的代码和我生成的图表。请注意,我有 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"
  ))

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...