如何在geom_bar中更改计算变量的填充颜色

时间:2018-05-04 21:49:20

标签: r ggplot2 geom-bar

我正在尝试将默认填充颜色从蓝色更改为绿色或红色。 这是我正在使用的代码

Top_pos<- ggplot(Top_10, aes(x=reorder(Term,Cs), y=Cs, fill=pvalue)) + 
    geom_bar(stat = "identity", colour="black") + coord_flip() 

使用上面的代码,我得到以下图像。我对这些数据没有任何问题,但我不知道如何更改填充颜色。

bar plot with current colors

2 个答案:

答案 0 :(得分:0)

就个人而言,我是R Color Brewer的粉丝。它有一组内置的调色板,可以很好地协同定性,顺序或分散数据类型。查看colorbrewer2.org以获取有关实际数据的一些示例

更一般地说,对于如何实际编码它,您总是可以添加scale_fill_manual参数。 ggplot2中有一些用于渐变(examples here)

的内置插件

答案 1 :(得分:0)

很容易混淆缩放颜色和缩放填充。在geom_bar / geom_col的情况下,颜色会更改条形周围的边框,而填充会更改条形内部的颜色。

您已经拥有按值缩放填充颜色所需的代码:aes(fill = pvalue)。您缺少的部分是scale_fill_*命令。有几种选择;连续比例的一些常见问题是scale_fill_gradientscale_fill_distiller。有些软件包还会导出调色板和缩放功能,以便于使用它们,例如最后一个使用rcartocolor包中的标尺的示例。

scale_fill_gradient可让您为渐变设置端点; scale_fill_gradient2scale_fill_gradientn可让您为渐变设置多个中点。

scale_fill_distiller将为离散数据设计的ColorBrewer调色板插入连续比例。

library(tidyverse)

set.seed(1234)
Top_10 <- tibble(
    Term = letters[1:10],
    Cs = runif(10),
    pvalue = rnorm(10, mean = 0.05, sd = 0.005)
)

plt <- ggplot(Top_10, aes(x = reorder(Term, Cs), y = Cs, fill = pvalue)) +
    geom_col(color = "black") +
    coord_flip()

plt + scale_fill_gradient(low = "white", high = "purple")

plt + scale_fill_distiller(palette = "Greens")

plt + rcartocolor::scale_fill_carto_c(palette = "Sunset")

reprex package(v0.2.0)创建于2018-05-05。