簡體   English   中英

如何在R中的多線圖上添加圖例?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM