在 ggplot2 中创建具有不同数据集的图例
create a legend with different datasets in ggplot2
我正在尝试在 ggplot 中创建图例。如果我使用同一文件中的不同变量,我在 aes 中添加 colour = "xx"
并且它有效。但是如果它是相同的变量但不同的数据集呢?
在下面的示例中,我绘制了来自两个不同数据集的 Value ~ Year。我如何创建一个图例,用红线表示 df1,用蓝线表示 df2?
A <- c(2001, 2002, 2003, 2004, 2005)
B <- c(3, 5, 2, 7, 5)
C <- c(2, 7, 4, 3, 5)
df1 <- data.frame(A, B)
df2 <- data.frame(A, C)
colnames(df1) <- c("Year","Value")
colnames(df2) <- c("Year","Value")
(test <- ggplot(df1, aes(Value, Year)) + geom_path(size = 1, colour='red') +
geom_path(data=df2, colour='blue') + ylab("Year")+ scale_x_continuous(position = "top") + scale_y_reverse(expand = c(0, 0)))
我们可以使用 bind_rows
创建一个数据集并指定 .id
来创建一个分组列,它可以作为 'colour`
在 aes
中传递
library(ggplot2)
library(dplyr)
bind_rows(lst(df1, df2), .id = 'grp') %>%
ggplot(aes(Value, Year, colour = grp)) +
geom_path(size = 1) +
ylab("Year")+
scale_x_continuous(position = "top") +
scale_y_reverse(expand = c(0, 0))
-输出
这是一个简单的解决方案,但不是一个很好的解决方案,你有更多 data.frames
图书馆
library(tidyverse)
代码
ggplot(df1, aes(Value, Year)) +
geom_path(size = 1,aes(colour='df1')) +
geom_path(data = df2,size = 1,aes(colour='df2')) +
ylab("Year")+
scale_x_continuous(position = "top") +
scale_y_reverse(expand = c(0, 0))+
scale_colour_manual(values = c("df1" = "red", "df2" = "blue"))
输出
我正在尝试在 ggplot 中创建图例。如果我使用同一文件中的不同变量,我在 aes 中添加 colour = "xx"
并且它有效。但是如果它是相同的变量但不同的数据集呢?
在下面的示例中,我绘制了来自两个不同数据集的 Value ~ Year。我如何创建一个图例,用红线表示 df1,用蓝线表示 df2?
A <- c(2001, 2002, 2003, 2004, 2005)
B <- c(3, 5, 2, 7, 5)
C <- c(2, 7, 4, 3, 5)
df1 <- data.frame(A, B)
df2 <- data.frame(A, C)
colnames(df1) <- c("Year","Value")
colnames(df2) <- c("Year","Value")
(test <- ggplot(df1, aes(Value, Year)) + geom_path(size = 1, colour='red') +
geom_path(data=df2, colour='blue') + ylab("Year")+ scale_x_continuous(position = "top") + scale_y_reverse(expand = c(0, 0)))
我们可以使用 bind_rows
创建一个数据集并指定 .id
来创建一个分组列,它可以作为 'colour`
aes
中传递
library(ggplot2)
library(dplyr)
bind_rows(lst(df1, df2), .id = 'grp') %>%
ggplot(aes(Value, Year, colour = grp)) +
geom_path(size = 1) +
ylab("Year")+
scale_x_continuous(position = "top") +
scale_y_reverse(expand = c(0, 0))
-输出
这是一个简单的解决方案,但不是一个很好的解决方案,你有更多 data.frames
图书馆
library(tidyverse)
代码
ggplot(df1, aes(Value, Year)) +
geom_path(size = 1,aes(colour='df1')) +
geom_path(data = df2,size = 1,aes(colour='df2')) +
ylab("Year")+
scale_x_continuous(position = "top") +
scale_y_reverse(expand = c(0, 0))+
scale_colour_manual(values = c("df1" = "red", "df2" = "blue"))