[英]Combine fill and color legend in ggplot
我發現了一些與我的問題類似的問題,但沒有一個真正適合。 我有 4 個數據列我想要 plot,3 個作為行,1 個作為區域。
我想將生成的 Plot 的圖例濃縮成一個整齊的 2 行 2 列設置,但我似乎不知道如何。 示例代碼:
library(tidyverse)
#Random Data
data <- tibble(X=1:50,
A=sample(seq(5, 6, 0.1), 50, replace = TRUE),
B=sample(seq(4, 5, 0.1), 50, replace = TRUE),
C=sample(seq(3, 4, 0.1), 50, replace = TRUE),
D=sample(seq(1, 3, 0.5), 50, replace = TRUE))
ggplot(data, aes(x=X)) +
geom_area(aes(y=D, fill='Dataset4'), alpha=0.5) +
geom_line(aes(y=A, color='Dataset1')) +
geom_line(aes(y=B, color='Dataset2')) +
geom_line(aes(y=C, color='Dataset3')) +
ylab("")+
guides(fill=guide_legend(nrow=2, order=2),
color=guide_legend(nrow=2, order=1))
結果圖:
我想讓四個圖例條目以 2x2 方向排列,這可能嗎?
您可以通過使用具有顏色和填充美感的比例來做到這一點。 棘手的一點是讓圖例知道什么應該畫成一條線,什么應該畫成一個多邊形,對此我沒有自動解決方案。 下面的手動解決方案有效,但如果您使用不同的比例,則必須用另一種顏色替換第 4 次填充。
library(ggplot2)
library(tibble)
#Random Data
data <- tibble(X=1:50,
A=sample(seq(5, 6, 0.1), 50, replace = TRUE),
B=sample(seq(4, 5, 0.1), 50, replace = TRUE),
C=sample(seq(3, 4, 0.1), 50, replace = TRUE),
D=sample(seq(1, 3, 0.5), 50, replace = TRUE))
ggplot(data, aes(x=X)) +
geom_area(aes(y=D, fill='Dataset4'), alpha=0.5) +
geom_line(aes(y=A, color='Dataset1')) +
geom_line(aes(y=B, color='Dataset2')) +
geom_line(aes(y=C, color='Dataset3')) +
scale_colour_discrete(
name = "",
aesthetics = c("colour", "fill"),
guide = guide_legend(
nrow = 2, override.aes = list(
linetype = c(1, 1, 1, 0),
fill = c(NA, NA, NA, scales::hue_pal()(4)[4])
)
)
) +
ylab("")
#> Warning: Duplicated override.aes is ignored.
由代表 package (v2.0.0) 於 2022 年 8 月 31 日創建
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.