我想創建一個如下圖所示的圖表,但具有按組自定義的圖例。我有兩個樣本名稱 A 和 B 以及關聯的目標 (Y)。我想要的是將圖例與一側分組:
樣本 A:真實與 obs
和另一側
樣本 B:真實與
具有相應形狀和顏色的obs 。下面,這是我已經擁有的。
library(ggplot2)
sites = rep(seq(0.55,0.58,0.01), times = 4)
sites = sort(sites)
org = rep(c("Y_A", "Y_A_obs", "Y_b", "Y_b_obs"), times = 4)
values = rnorm(16)
df = data.frame(sites = sites, origine = org, values = values)
ggplot(df, aes(x=sites, y=values, color=origine))
geom_point(aes(shape=origine, color=origine), size=3)
scale_shape_manual(values=c(0, 15, 2, 17))
scale_color_manual(values=c("blue", "purple", "red", "orange"))

這就是我想要的:

謝謝你的幫助 !
uj5u.com熱心網友回復:
實作您想要的結果的一種選擇是使用ggnewscale允許相同美學的多個比例和圖例的包。這種方法的缺點是它的代碼行數增加了一倍:
library(ggplot2)
library(ggnewscale)
set.seed(123)
sites = rep(seq(0.55,0.58,0.01), times = 4)
sites = sort(sites)
org = rep(c("Y_A", "Y_A_obs", "Y_b", "Y_b_obs"), times = 4)
values = rnorm(16)
df = data.frame(sites = sites, origine = org, values = values)
ggplot()
geom_point(data = subset(df, grepl("^Y_A", org)), aes(x=sites, y=values, shape=origine, color=origine), size=3)
scale_shape_manual(name = "A", values=c(Y_A = 0, Y_A_obs = 15),
labels=c(Y_A = "y_true", Y_A_obs = "y_pred"),
guide = guide_legend(order = 1))
scale_color_manual(name = "A",
values=c(Y_A = "blue", Y_A_obs = "purple"),
labels=c(Y_A = "y_true", Y_A_obs = "y_pred"),
guide = guide_legend(order = 1))
new_scale_color()
new_scale("shape")
geom_point(data = subset(df, grepl("^Y_b", org)), aes(x=sites, y=values, shape=origine, color=origine), size=3)
scale_shape_manual(name = "B",
values=c(Y_b = 2, Y_b_obs = 17),
labels=c(Y_b = "y_true", Y_b_obs = "y_pred"),
guide = guide_legend(order = 2))
scale_color_manual(name = "B",
values=c(Y_b = "red", Y_b_obs = "orange"),
labels=c(Y_b = "y_true", Y_b_obs = "y_pred"),
guide = guide_legend(order = 2))

轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/394496.html
上一篇:在R中繪制圖形時的縮放問題
