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