使用 R 中的 facet_wrap 或 facet_grid 在左侧面板的一张图上绘制两条线,在右侧面板上绘制它们的差异
Plot two lines on one graph on left panel and their difference on the right panel using facet_wrap or facet_grid in R
我有以下数据框:
df1 <- data.frame(a= c(1:10), x= c(0.1, 0.5, 0.2, 0.1, 0, 0.23, 0.25, 0.4, 0.01, 0.2),
y= c(0.3,0.01, 0.8, 0.2, 0.02, 0.14, 0.47, 0.35, 0, 0.32), name="L1")
df2 <- data.frame(a= c(1:10), x= c(0.2, 0.25, 0.2, 0.1, 0, 0.23, 0.25, 0.4, 0.01, 0.2),
y= c(0.76,0.81, 0.18, 0.52, 0.02, 0.14, 0.47, 0.35, 0, 0.32), name="L2")
我想使用 facet_wrap
或 facet_grid
来获得以下图:
在左侧面板上,我想在一张图上同时绘制变量 x 和 y,在右侧面板上,我想使用两种方法 L1 和 L2 绘制 x 和 y 之间的差异。
我试过以下代码:
library(ggplot2)
library(reshape)
df3 <- melt(df1, id = c("a", "name"))
df4 <- melt(df2, id = c("a", "name"))
df5 <- rbind(df3, df4)
ggplot()+geom_line(data = df5, aes(x=a, y=value, color= variable))+
facet_grid(name ~ variable)+
geom_line(data = df1, aes(x=a, y=y))+
geom_line(data = df2, aes(x=a, y=y))
ggplot()+
geom_line(data = df1, aes(x=a, y= x-y), color= "green")
ggplot()+
geom_line(data = df2, aes(x=a, y= x-y), color= "green")
我无法完成作业。
如有任何帮助,我们将不胜感激。
为了便于处理,我会在 melt
之前创建 x - y
列。然后我们需要为 facet_grid
创建一个列(在我的代码 group
中)。 factor
操作设置小平面的位置,因此 x and y
将位于 x - y
的左侧。最后,使用 scale_color_manual
.
设置颜色
library(ggplot2)
library(dplyr)
library(reshape2)
df1 <- data.frame(a= c(1:10), x= c(0.1, 0.5, 0.2, 0.1, 0, 0.23, 0.25, 0.4, 0.01, 0.2),
y= c(0.3,0.01, 0.8, 0.2, 0.02, 0.14, 0.47, 0.35, 0, 0.32), name="L1")
df2 <- data.frame(a= c(1:10), x= c(0.2, 0.25, 0.2, 0.1, 0, 0.23, 0.25, 0.4, 0.01, 0.2),
y= c(0.76,0.81, 0.18, 0.52, 0.02, 0.14, 0.47, 0.35, 0, 0.32), name="L2")
rbind(df1, df2) %>%
mutate(`x - y` = x - y) %>%
melt(id = c("a", "name")) %>%
mutate(group = if_else(variable %in% c("x", "y"), "x and y", "x - y"),
group = factor(group, levels = c("x and y", "x - y"))) %>%
ggplot(aes(a, value, col = variable)) +
geom_line() +
facet_grid(name ~ group) +
scale_color_manual(values = c("x" = "red", "y" = "black", "x - y" = "green"))
由 reprex package (v2.0.1)
创建于 2022-05-01
我有以下数据框:
df1 <- data.frame(a= c(1:10), x= c(0.1, 0.5, 0.2, 0.1, 0, 0.23, 0.25, 0.4, 0.01, 0.2),
y= c(0.3,0.01, 0.8, 0.2, 0.02, 0.14, 0.47, 0.35, 0, 0.32), name="L1")
df2 <- data.frame(a= c(1:10), x= c(0.2, 0.25, 0.2, 0.1, 0, 0.23, 0.25, 0.4, 0.01, 0.2),
y= c(0.76,0.81, 0.18, 0.52, 0.02, 0.14, 0.47, 0.35, 0, 0.32), name="L2")
我想使用 facet_wrap
或 facet_grid
来获得以下图:
在左侧面板上,我想在一张图上同时绘制变量 x 和 y,在右侧面板上,我想使用两种方法 L1 和 L2 绘制 x 和 y 之间的差异。
我试过以下代码:
library(ggplot2)
library(reshape)
df3 <- melt(df1, id = c("a", "name"))
df4 <- melt(df2, id = c("a", "name"))
df5 <- rbind(df3, df4)
ggplot()+geom_line(data = df5, aes(x=a, y=value, color= variable))+
facet_grid(name ~ variable)+
geom_line(data = df1, aes(x=a, y=y))+
geom_line(data = df2, aes(x=a, y=y))
ggplot()+
geom_line(data = df1, aes(x=a, y= x-y), color= "green")
ggplot()+
geom_line(data = df2, aes(x=a, y= x-y), color= "green")
我无法完成作业。 如有任何帮助,我们将不胜感激。
为了便于处理,我会在 melt
之前创建 x - y
列。然后我们需要为 facet_grid
创建一个列(在我的代码 group
中)。 factor
操作设置小平面的位置,因此 x and y
将位于 x - y
的左侧。最后,使用 scale_color_manual
.
library(ggplot2)
library(dplyr)
library(reshape2)
df1 <- data.frame(a= c(1:10), x= c(0.1, 0.5, 0.2, 0.1, 0, 0.23, 0.25, 0.4, 0.01, 0.2),
y= c(0.3,0.01, 0.8, 0.2, 0.02, 0.14, 0.47, 0.35, 0, 0.32), name="L1")
df2 <- data.frame(a= c(1:10), x= c(0.2, 0.25, 0.2, 0.1, 0, 0.23, 0.25, 0.4, 0.01, 0.2),
y= c(0.76,0.81, 0.18, 0.52, 0.02, 0.14, 0.47, 0.35, 0, 0.32), name="L2")
rbind(df1, df2) %>%
mutate(`x - y` = x - y) %>%
melt(id = c("a", "name")) %>%
mutate(group = if_else(variable %in% c("x", "y"), "x and y", "x - y"),
group = factor(group, levels = c("x and y", "x - y"))) %>%
ggplot(aes(a, value, col = variable)) +
geom_line() +
facet_grid(name ~ group) +
scale_color_manual(values = c("x" = "red", "y" = "black", "x - y" = "green"))
由 reprex package (v2.0.1)
创建于 2022-05-01