如何防止 ggplot 在每個方面多次重復所有幾何?
想象一下,我想創建一個圖,顯示沿 x 軸跨多個方面的溫度。為了增加效果,我創建了兩個 geom_rects() 來顯示溫度是高于還是低于冰點。
在“A”組中,geom_rect 被繪制一次。在“B”組中,geom_rect 被繪制了兩次。在“C”組中,geom_rect 被繪制了 3 次。
因為 geom_rect 重復的次數不同,所以刻面的 alpha 值變得不同(請注意從上到下的差異)。
我怎樣才能避免這種情況?
library(tidyverse)
set.seed(1)
df <- tibble(
facet_var = c("A", "B", "B", "C", "C", "C"),
celcius = rnorm(n = 6),
y = as.factor(c(1, 1, 2, 1, 2, 3)))
df %>%
ggplot(aes(x = celcius, y = y))
geom_point()
geom_rect(xmin = -2.5, xmax=0.0,
ymax=3.5 , ymin=0,
fill = "blue", alpha =0.2)
geom_rect(xmin = 0, xmax=2,
ymax=3.5, ymin=0,
fill = "red", alpha =0.2)
facet_grid(rows = vars(facet_var), scales = "free_y", space = "free_y")
由reprex 包于 2022-06-30 創建(v2.0.1)
uj5u.com熱心網友回復:
您可以使用annotate
geom rect
:
(設定ymin
為-Inf
和ymax
以Inf
保留"free_y"
間距。)
library(tidyverse)
set.seed(1)
df <- tibble(
facet_var = c("A", "B", "B", "C", "C", "C"),
celcius = rnorm(n = 6),
y = as.factor(c(1, 1, 2, 1, 2, 3)))
df %>%
ggplot(aes(celcius, y))
geom_point()
annotate("rect", xmin = -2.5, xmax = 0.0, ymin = -Inf, ymax = Inf, fill = "blue", alpha = 0.2)
annotate("rect", xmin = 0, xmax = 2, ymin = -Inf, ymax = Inf, fill = "red", alpha = 0.2)
facet_grid(rows = vars(facet_var), scales = "free_y", space = "free_y")
由reprex 包于 2022-06-30 創建(v2.0.1)
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/498315.html