[英]How to add a legend on a multiple line graph in R?
我試圖在同一個圖上繪制兩個不同的數據集。 我正在使用此代碼添加線條並實際繪制所有內容
ggplot()+
geom_point(data=Acc, aes(x=Year, y=Accumulo), color="lightskyblue")+
geom_line(data=Acc, aes(x=Year, y=RM3), color="gold1")+
geom_line(data=Acc, aes(x=Year, y=RM5), color="springgreen3")+
geom_line(data=Acc, aes(x=Year, y=RM50), color="blue")+
geom_line(data=Vulcani, aes(x=Year, y=Accumulo.V), color="red")+
theme_bw()+
scale_x_continuous(expand=expand_scale(0)) + scale_y_continuous(limits=c(50,350),expand=expand_scale(0))
但我找不到任何方法來添加圖例並向不同系列添加自定義標簽。 我找到了一種在單個數據集上添加圖例的方法,但我找不到一種方法可以在側面添加圖例
您最好創建一個根據您的繪圖需求量身定制的單個數據集,該數據集將采用長格式,以便您可以提供單個geom_line()
指令,並使用aes(color = ...)
為線條添加顏色在對geom_line()
的調用中。 這是midwest
數據集的示例(為了舉例,將它們視為不同的數據集)
library(ggplot2)
library(dplyr)
library(tidyr)
long_midwest <- midwest %>%
select(popwhite, popasian, PID, poptotal) %>%
gather(key = "variable", value = "value", -PID, -poptotal) # convert to long format
long_midwest2 <- midwest %>%
select(poptotal, perchsd, PID) %>%
gather(key = "variable", value = "value", -PID, -poptotal)
plot_data <- bind_rows(long_midwest, long_midwest2) %>% # bind datasets vertically
mutate(line_type = ifelse(variable == 'perchsd', 'A', 'B')) # creates a line_type variable
ggplot(data = plot_data, aes(x=poptotal, y = value))+
geom_line(aes(color = variable, linetype = line_type)) +
scale_color_manual(
values = c('lightskyblue', 'gold1', 'blue'),
name = "My color legend"
) +
scale_linetype_manual(
values = c(3, 1), # play with the numbers to get the correct styling
name = "My linetype legend"
)
我添加了一個line_type
變量來顯示最通用的情況,在這種情況下,您需要在列值和線型之間進行特定映射。 如果它與例如variable
相同,只需使用aes(color = variable, linetype = variable)
。 然后,您可以決定所需的線型( 有關更多詳細信息,請參見此處)。
要自定義標簽,只需使用所需值更改數據集中variable
的內容。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.