我有以下資料框:
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")
我無法完成我的任務。任何幫助將不勝感激。
uj5u.com熱心網友回復:
為了更容易處理,我會x - y在melt. 然后我們需要group為facet_grid. 該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 包(v2.0.1)于 2022-05-01 創建
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/469430.html
上一篇:通過單擊按鈕用rvest刮桌子
