Как изменить цвет заливки для вычисляемой переменной в geom_bar

Я пытаюсь изменить цвет заливки по умолчанию с синего на зеленый или красный. Вот код, который я использую

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

Используя приведенный выше код, я получаю следующее изображение. У меня нет проблем с этими данными, но я не знаю, как изменить цвет заливки.

гистограмма с текущими цветами


person Emma Kate Loveday    schedule 04.05.2018    source источник


Ответы (2)


Легко перепутать масштабирование цвета и масштабирование заливки. В случае geom_bar/geom_col цвет изменяет границы вокруг полос, а заливка изменяет цвета внутри полос.

У вас уже есть код, необходимый для масштабирования цвета заливки по значению: aes(fill = pvalue). Часть, которую вам не хватает, - это команда scale_fill_*. Есть несколько вариантов; некоторые из наиболее распространенных для непрерывных шкал - scale_fill_gradient или scale_fill_distiller. Некоторые пакеты также экспортируют палитры и функции масштабирования, чтобы упростить их использование, например, последний пример, в котором используется масштаб из пакета rcartocolor.

scale_fill_gradient позволяет установить конечные точки для градиента; scale_fill_gradient2 и scale_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")

Создано 05 мая 2018 г. с помощью пакета reprex (v0.2.0).

person camille    schedule 05.05.2018

Лично я являюсь поклонником R Color Brewer. Он имеет набор встроенных палитр, которые хорошо сочетаются друг с другом для качественных, последовательных или расходящихся типов данных. Посетите colorbrewer2.org, где приведены некоторые примеры реальных данных.

В более общем смысле и для того, как это на самом деле закодировать, вы всегда можете добавить аргумент scale_fill_manual. В ggplot2 есть несколько встроенных функций для градиентов (примеры здесь)

person Punintended    schedule 04.05.2018
comment
Я пробовал это, но это не изменит цвет салона. Изменяется только контур полос. Попробую еще раз - спасибо! - person Emma Kate Loveday; 05.05.2018
comment
Один из вас двоих должен опубликовать код!!!!! На данный момент это выглядит как ответ только по ссылке. - person IRTFM; 05.05.2018