【发布时间】:2019-04-17 07:09:14
【问题描述】:
我正在尝试根据沿 x 轴的精确边界对 ggplot 直方图进行不同的着色。但是,颜色并不准确,因为包含两种颜色值的 bin 将显示为水平拆分的混合颜色 bin。下面的示例最小代码和问题图表。
我想按颜色垂直分割 bin。这样截止线左侧的所有值都是一种颜色,而截止线右侧的所有值都是另一种颜色。
我怎样才能做到这一点?
我认为 geom_density 不会有这个问题,但我更喜欢使用 geom_histogram 而不是 geom_density,因为直方图显示 y 轴上的实际计数。
cutoff_point <- 3.9
mtcars %>%
mutate(wt_color = ifelse(wt < cutoff_point, "red", "blue")) %>%
select(wt, wt_color) %>%
ggplot(aes(x=wt, fill = wt_color)) +
geom_histogram(bins = 5) +
geom_vline(xintercept=cutoff_point, colour="black")
boundary 参数在我只有一个分界点时效果很好,但在我有两个分界点时不起作用,如下所示
cutoff_point1 <- 2.5
cutoff_point2 <- 5.4
mtcars %>%
mutate(wt_color = case_when(
wt < cutoff_point1 ~ "blue",
wt > cutoff_point1 & wt < cutoff_point2 ~ "red",
TRUE ~ "green"
)) %>%
select(wt, wt_color) %>%
ggplot(aes(x=wt, fill = wt_color)) +
geom_histogram(bins = 5, boundary=cutoff_point) +
geom_vline(xintercept=cutoff_point, colour="black")
【问题讨论】:
-
您可以为您的
geom_histogram提供boundary=cutoff_point。这将改变分箱,使一个边界正好在您的截止点 -
啊,当我在这个例子中只有两个组时,这很有效,但在我的实际图表中,我有多个截止点,在这种情况下,它似乎没有做任何事情
-
啊。是的。您只能指定一个截止点。那我得想点更复杂的事情了
-
我会用另一个例子更新问题