我如何创建直方图,其中 bin 在任意值之上和之下的颜色不同,而不需要引用 ggplot() 之外的环境?例如,像这样(但不需要引用外部变量
value.median
):
value = stats::rnorm(100, mean = 0, sd = 1)
df = data.frame(value) %>%
dplyr::mutate(above.median = value > median(value))
value.median = median(value)
df %>%
ggplot(aes(x = value, fill = above.median)) +
geom_histogram(boundary = value.median, alpha = 0.5)
不像这样(重叠的bin):
df %>%
ggplot(aes(x = value, fill = above.median)) +
geom_histogram(boundary = 0, alpha = 0.5)
您可以将
position = "identity"
添加到geom,而不是默认的(即position = "stack"
),例如
library(tidyverse)
set.seed(123)
df <- data.frame(value = rnorm(100, mean = 0, sd = 1))
df %>%
mutate(above_below_zero = ifelse(value < median(value), "negative", "positive")) %>%
ggplot(aes(x = value, fill = above_below_zero)) +
geom_histogram(alpha = 0.5, bins = 30, position = "identity") +
scale_fill_manual(values = c("negative" = "firebrick3",
"positive" = "deepskyblue"))
创建于 2023-03-13 与 reprex v2.0.2