【发布时间】:2021-08-06 21:06:50
【问题描述】:
我正在尝试使用基于值的手动色标来绘制我的数据。但是,显示的颜色与我提供的值相对应。 我的数据如下所示:
# A tibble: 100 x 2
chunk avg
<dbl> <dbl>
1 0 0.0202
2 1 0.0405
3 2 0.0648
4 3 0.0405
5 4 0.0283
6 5 -0.00806
7 6 -0.0526
8 7 -0.0364
9 8 -0.00810
10 9 0.0243
# ... with 90 more rows
然后我将它通过管道传输到 ggplot2:
data %>%
ggplot(
aes(
chunk,
avg,
fill = cut(
avg,
c(-Inf, -0.01, 0.01, Inf)
)
)
) +
geom_bar(stat = "identity", show.legend = FALSE) +
scale_color_manual(
values = c(
"(-Inf, -0.01)" = "red",
"[-0.01, 0.01]" = "yellow",
"(0.01, Inf)" = "green"
)
)
如您所见,我想根据值对我的条形图进行着色,红色低于 -0.01,绿色高于 0.01 和黄色之间。
这是我收到的结果:
我错过了什么?
【问题讨论】:
-
试试
scale_fill_manual( ... -
如果我改成
scale_fill_manual,我根本就没有图表。如果我做相反的事情并在aes中将fill更改为color,我会得到灰色条。 -
...切换到
scale_fill_manual时的问题是cut返回的默认标签在逗号后(几乎)没有空格,即cut(runif(10, -1 ,1), c(-Inf, -0.01, 0.01, Inf))给出Levels: (-Inf,-0.01] (-0.01,0.01] (0.01, Inf]。跨度>
标签: r ggplot2 colors bar-chart scale-color-manual