[英]Add legend to ggplot line graph based on linetype
我正在嘗試將圖例添加到使用實線和虛線的 ggplot 圖中。
require(ggplot2)
DATE <- c("2020-10-14", "2020-10-15", "2020-10-16", "2020-10-17", "2020-10-18")
TMAX <- c(47, 45, 43, 40, 4)
TMIN <- c(35, 34, 28, 26, 29)
df <- data.frame(DATE, TMAX, TMIN)
ggplot(data = df, aes(x = DATE, y = TMIN, group = 1)) +
geom_path(linetype = 1, size = 1.5) +
labs(x = "Date",
y = "Temp (F)") +
theme(axis.text.x = element_text(angle = 90, vjust = 0.5, hjust=1)) +
geom_path(data = df, linetype = 2, size = 1.5, aes(x = DATE, y=TMAX))
一個類似的問題指出我應該在aes
中包含linetype
,盡管這不會產生圖例。 例如:
ggplot(data = df, aes(x = DATE, y = TMIN, group = 1, linetype = 1)) +
geom_path(size = 1.5) +
labs(x = "Date",
y = "Temp (F)") +
theme(axis.text.x = element_text(angle = 90, vjust = 0.5, hjust=1)) +
geom_path(data = df, size = 1.5, aes(x = DATE, y=TMAX, linetype=2))
這是錯誤:
Error: A continuous variable can not be mapped to linetype
如何向顯示我的實線和虛線的圖形添加圖例?
嘗試將此數據整形為 long,然后在 linetype 語句中使用變量。 這樣就可以獲得傳說了。 這里的代碼:
require(ggplot2)
require(tidyr)
require(dplyr)
#Data
DATE <- c("2020-10-14", "2020-10-15", "2020-10-16", "2020-10-17", "2020-10-18")
TMAX <- c(47, 45, 43, 40, 4)
TMIN <- c(35, 34, 28, 26, 29)
df <- data.frame(DATE, TMAX, TMIN)
#Plot
df %>% pivot_longer(-DATE) %>%
ggplot(aes(x = DATE, y = value, group = name,linetype=name)) +
geom_path(size = 1.5) +
labs(x = "Date",
y = "Temp (F)") +
theme(axis.text.x = element_text(angle = 90, vjust = 0.5, hjust=1))+
scale_linetype_manual(values=c(2,1))+labs(linetype='Var')+
guides(linetype = guide_legend(override.aes = list(size = 0.5)))
Output:
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.