Изменить цветовую палитру в гистограмме - PullRequest
4 голосов
/ 23 февраля 2012

Я пытаюсь изменить цвета моей гистограммы, но не знаю, как это сделать, это мой код:

qplot(user, count, data=count_group, geom="histogram", fill=group,
            xlab = "users", ylab="count", 
            main="Users")+
    opts(axis.text.x=theme_text(angle=90, hjust=0, size=7))

вот гистограмма, которую я получаю, но цвета по умолчанию слишком яркие,

enter image description here

Я хотел бы использовать цвета, такие как это

Я пытался добавить строку, но это не сработало.

  scale_fill_brewer(palette = palette)

Ответы [ 2 ]

11 голосов
/ 23 февраля 2012

Если вы хотите использовать Brewer Set1 с таким количеством групп, вы можете сделать что-то вроде этого:

library(ggplot2)

count_group <- data.frame(user=factor(rep(1:50, 2)), 
                          count=sample(100, 100, replace=T), 
                          group=factor(rep(LETTERS[1:20], 5)))

library(RColorBrewer)
cols <- colorRampPalette(brewer.pal(9, "Set1"))
ngroups <- length(unique(count_group$group))
qplot(user, count, data=count_group, geom="histogram", fill=group,
      xlab = "users", ylab="count") +
      opts(axis.text.x=theme_text(angle=90, hjust=0, size=7)) +
      scale_fill_manual(values = cols(ngroups))

Brewer Set 1 with many groups in ggplot

РЕДАКТИРОВАТЬ

Вы можете создавать и использовать несколько colorRampPalette с, например, чтобы назначить синие группы от A до J и красные группы K от T:

blues <- colorRampPalette(c('dark blue', 'light blue'))
reds <- colorRampPalette(c('pink', 'dark red'))

qplot(user, count, data=count_group, geom="histogram", fill=group,
      xlab = "users", ylab="count") +
        opts(axis.text.x=theme_text(angle=90, hjust=0, size=7)) +
        scale_fill_manual(values = c(blues(10), reds(10)))
# blues(10) and reds(10) because you want blues for the first ten
#  groups, and reds thereafter. Each of these functions are equivalent
#  to providing vectors containing ten hex colors representing a gradient
#  of blues and a gradient of reds.

ggplot with blues and reds

1 голос
/ 18 марта 2014

Обновление ответа jbaums.Насколько я могу судить, с новым ggplot2 (по состоянию на март 2014 года) доступен следующий синтаксис:

p <- qplot(user, count, 
  data = count_group, 
  geom = "histogram", 
  stat = "bin2d",
  fill = group,
  xlab = "users", 
  ylab = "count"
)
p <- p + theme(axis.text.x = element_text(angle = 90, hjust = 0, size = 7))
p <- p + scale_fill_manual(values = cols(ngroups))
p

Это было немного долго для комментария, но это не полный ответ,остальная часть кода предоставлена ​​jbaums, и за это нужно поблагодарить!

...