每个单独变量 ggplot R 的比例线型
Scale linetype per individual variable ggplot R
我正在用 2 条线绘制一个图形,一条用于值 1,一条用于值 2。添加 scale_colour_manual 有效,但是,添加 scale_linetype_manual 无效。我正在尝试将值 1 设置为虚线,将值 2 设置为双虚线。
你能帮我给线条加上线型吗?
structure(list(Date = structure(c(16801, 16832, 16861, 16892,
16922, 16953, 16983, 17014, 17045, 17075, 17106, 17136, 17167,
17198, 17226, 17257, 17287, 17318, 17348, 17379, 17410, 17440,
17471, 17501, 17532, 17563, 17591, 17622, 17652, 17683, 17713,
17744, 17775, 17805, 17836, 17866, 17897, 17928, 17956, 17987,
18017, 18048, 18078, 18109, 18140, 18170, 18201, 18231, 18262,
18293, 18322, 18353, 18383, 18414, 18444, 18475, 18506, 18536,
18567, 18597, 18628, 18659, 18687, 18718, 18748, 18779, 18809,
18840, 18871, 18901, 18932, 18962), class = "Date"), `Value 1` = c(20.2820285962056,
20.1656446783417, 20.1688905436013, 20.2421245198425, 20.3262152504194,
20.2795155085514, 20.2726004595672, 20.3140265649524, 20.3293861068442,
20.3738399424877, 20.3107991411253, 20.4308509146563, 20.4723974934767,
20.4599242988163, 20.4861004817467, 20.4738989241297, 20.4913098610169,
20.4630264740941, 20.4808708640221, 20.4998454834076, 20.4881131250879,
20.5878140515117, 20.5840897258987, 20.623541664943, 20.6164801258481,
20.6663314702947, 20.6303376871471, 20.6477187254335, 20.6607477829638,
20.6557343789061, 20.6766932523984, 20.7050662428808, 20.7493243890245,
20.7200678918589, 20.5571237237406, 20.576069484868, 20.4616812747077,
20.5673118582694, 20.6150163500714, 20.5742834893148, 20.5968661409312,
20.4214813407422, 20.47242477387, 20.4886463911621, 20.4122358035502,
20.4332890140939, 20.458611442025, 20.5079434805371, 20.5473812163456,
20.4768502514293, 20.3836301933903, 20.0687058983601, 20.223450202593,
20.2709161852589, 20.3266867010993, 20.3182701149762, 20.387793425489,
20.3399687362029, 20.3882025799041, 20.5982993492042, 20.6912374278537,
20.7787871526229, 20.879054673808, 20.912422427002, 20.9227371143247,
20.9264326058792, 20.92286546477, 20.8639777659847, 20.9012211366426,
20.9034308680551, 20.9085654549109, 20.8662463645066), `Value 2` = c(21L,
21L, 21L, 21L, 21L, 21L, 21L, 21L, 21L, 21L, 21L, 21L, 21L, 21L,
21L, 21L, 21L, 21L, 21L, 21L, 21L, 21L, 21L, 21L, 21L, 21L, 21L,
21L, 21L, 21L, 21L, 21L, 21L, 21L, 21L, 21L, 21L, 21L, 21L, 21L,
21L, 21L, 21L, 21L, 21L, 21L, 21L, 21L, 21L, 21L, 21L, 21L, 21L,
21L, 21L, 21L, 21L, 21L, 21L, 21L, 21L, 21L, 22L, 22L, 22L, 22L,
22L, 22L, 22L, 22L, 22L, 22L)), row.names = c(NA, -72L), class = c("tbl_df",
"tbl", "data.frame"))
我使用的代码得到了下图:
geom_line(aes(y = `Value 1`, colour = "Value 1")) +
geom_line(aes(y = `Value 2`, colour = "Value 2")) +
scale_linetype_manual("", values =c( "Value 1" = "dashed", "Value 2" = "twodash")) +
scale_colour_manual("", values = c("Value 1" = "red", "Value 2" = "black"))+
ggpubr::theme_pubr() +
theme(legend.position =c(.5,.9), legend.direction='horizontal') +
theme(panel.background = element_rect(colour = "black", size=0.5)) +
scale_x_date(date_breaks = "1 years", date_labels = "%Y", limits = as.Date(c("2016-01-01","2021-12-01")), expand=c(0,0)) +
labs(x = "Date", y = "Value")
您应该在 aes
中分配 linetype
中的变量,然后将它们分配给 scale_linetype_manual
。您可以使用以下代码:
df %>%
ggplot(aes(x = Date)) +
geom_line(aes(y = `Value 1`, colour = "Value 1", linetype = "Value 1")) +
geom_line(aes(y = `Value 2`, colour = "Value 2", linetype = "Value 2")) +
scale_linetype_manual("", values =c("Value 1" = "dashed", "Value 2" = "twodash")) +
scale_colour_manual("", values = c("Value 1" = "red", "Value 2" = "black"))+
ggpubr::theme_pubr() +
theme(legend.position =c(.5,.9), legend.direction='horizontal') +
theme(panel.background = element_rect(colour = "black", size=0.5)) +
scale_x_date(date_breaks = "1 years", date_labels = "%Y", limits = as.Date(c("2016-01-01","2021-12-01")), expand=c(0,0)) +
labs(x = "Date", y = "Value")
输出:
我正在用 2 条线绘制一个图形,一条用于值 1,一条用于值 2。添加 scale_colour_manual 有效,但是,添加 scale_linetype_manual 无效。我正在尝试将值 1 设置为虚线,将值 2 设置为双虚线。
你能帮我给线条加上线型吗?
structure(list(Date = structure(c(16801, 16832, 16861, 16892,
16922, 16953, 16983, 17014, 17045, 17075, 17106, 17136, 17167,
17198, 17226, 17257, 17287, 17318, 17348, 17379, 17410, 17440,
17471, 17501, 17532, 17563, 17591, 17622, 17652, 17683, 17713,
17744, 17775, 17805, 17836, 17866, 17897, 17928, 17956, 17987,
18017, 18048, 18078, 18109, 18140, 18170, 18201, 18231, 18262,
18293, 18322, 18353, 18383, 18414, 18444, 18475, 18506, 18536,
18567, 18597, 18628, 18659, 18687, 18718, 18748, 18779, 18809,
18840, 18871, 18901, 18932, 18962), class = "Date"), `Value 1` = c(20.2820285962056,
20.1656446783417, 20.1688905436013, 20.2421245198425, 20.3262152504194,
20.2795155085514, 20.2726004595672, 20.3140265649524, 20.3293861068442,
20.3738399424877, 20.3107991411253, 20.4308509146563, 20.4723974934767,
20.4599242988163, 20.4861004817467, 20.4738989241297, 20.4913098610169,
20.4630264740941, 20.4808708640221, 20.4998454834076, 20.4881131250879,
20.5878140515117, 20.5840897258987, 20.623541664943, 20.6164801258481,
20.6663314702947, 20.6303376871471, 20.6477187254335, 20.6607477829638,
20.6557343789061, 20.6766932523984, 20.7050662428808, 20.7493243890245,
20.7200678918589, 20.5571237237406, 20.576069484868, 20.4616812747077,
20.5673118582694, 20.6150163500714, 20.5742834893148, 20.5968661409312,
20.4214813407422, 20.47242477387, 20.4886463911621, 20.4122358035502,
20.4332890140939, 20.458611442025, 20.5079434805371, 20.5473812163456,
20.4768502514293, 20.3836301933903, 20.0687058983601, 20.223450202593,
20.2709161852589, 20.3266867010993, 20.3182701149762, 20.387793425489,
20.3399687362029, 20.3882025799041, 20.5982993492042, 20.6912374278537,
20.7787871526229, 20.879054673808, 20.912422427002, 20.9227371143247,
20.9264326058792, 20.92286546477, 20.8639777659847, 20.9012211366426,
20.9034308680551, 20.9085654549109, 20.8662463645066), `Value 2` = c(21L,
21L, 21L, 21L, 21L, 21L, 21L, 21L, 21L, 21L, 21L, 21L, 21L, 21L,
21L, 21L, 21L, 21L, 21L, 21L, 21L, 21L, 21L, 21L, 21L, 21L, 21L,
21L, 21L, 21L, 21L, 21L, 21L, 21L, 21L, 21L, 21L, 21L, 21L, 21L,
21L, 21L, 21L, 21L, 21L, 21L, 21L, 21L, 21L, 21L, 21L, 21L, 21L,
21L, 21L, 21L, 21L, 21L, 21L, 21L, 21L, 21L, 22L, 22L, 22L, 22L,
22L, 22L, 22L, 22L, 22L, 22L)), row.names = c(NA, -72L), class = c("tbl_df",
"tbl", "data.frame"))
我使用的代码得到了下图:
geom_line(aes(y = `Value 1`, colour = "Value 1")) +
geom_line(aes(y = `Value 2`, colour = "Value 2")) +
scale_linetype_manual("", values =c( "Value 1" = "dashed", "Value 2" = "twodash")) +
scale_colour_manual("", values = c("Value 1" = "red", "Value 2" = "black"))+
ggpubr::theme_pubr() +
theme(legend.position =c(.5,.9), legend.direction='horizontal') +
theme(panel.background = element_rect(colour = "black", size=0.5)) +
scale_x_date(date_breaks = "1 years", date_labels = "%Y", limits = as.Date(c("2016-01-01","2021-12-01")), expand=c(0,0)) +
labs(x = "Date", y = "Value")
您应该在 aes
中分配 linetype
中的变量,然后将它们分配给 scale_linetype_manual
。您可以使用以下代码:
df %>%
ggplot(aes(x = Date)) +
geom_line(aes(y = `Value 1`, colour = "Value 1", linetype = "Value 1")) +
geom_line(aes(y = `Value 2`, colour = "Value 2", linetype = "Value 2")) +
scale_linetype_manual("", values =c("Value 1" = "dashed", "Value 2" = "twodash")) +
scale_colour_manual("", values = c("Value 1" = "red", "Value 2" = "black"))+
ggpubr::theme_pubr() +
theme(legend.position =c(.5,.9), legend.direction='horizontal') +
theme(panel.background = element_rect(colour = "black", size=0.5)) +
scale_x_date(date_breaks = "1 years", date_labels = "%Y", limits = as.Date(c("2016-01-01","2021-12-01")), expand=c(0,0)) +
labs(x = "Date", y = "Value")
输出: