2016-02-01 3 views
1

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

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

blues <- brewer.pal(9, "Blues") 
blue_range <- colorRamp(blues) 

Затем я рисую свою стеклянную гистограмму, где я знаю, что у меня 20 групп.

ggplot(Month.Summary, aes(x=Calendar.Month, y = Measure, fill = Groups)) + geom_bar(stat="Identity", position = "fill") +scale_fill_manual(values = blue_range(20)) 

Я, к сожалению, получить следующее сообщение об ошибке:

Error: Insufficient values in manual scale. 20 needed but only 3 provided.

Я использую Groups как мою заливку, где я знаю, что есть 2 экземпляра. Я передаю 20 функции blue_range, поэтому я не уверен, почему она говорит, что я пропускаю только 3 цвета.

ответ

1

blue_range() функция ожидает значения между 0 и 1. Для того, чтобы получить дискретную палитру, передать последовательность этой функции:

> blue_range(seq(0, 1, length.out = 20)) 
      [,1]  [,2]  [,3] 
[1,] 247.00000 251.00000 255.0000 
[2,] 236.47368 244.26316 251.6316 
[3,] 225.94737 237.52632 248.2632 
[4,] 215.68421 230.78947 244.8947 
[5,] 205.57895 224.05263 241.5263 
[6,] 193.78947 217.21053 237.5263 
[7,] 176.94737 210.05263 231.6316 
[8,] 160.10526 202.89474 225.7368 
[9,] 139.21053 191.68421 220.9474 
[10,] 117.73684 179.89474 216.3158 
[11,] 98.36842 168.10526 210.6316 
[12,] 81.10526 156.31579 203.8947 
[13,] 64.26316 144.26316 197.1053 
[14,] 50.36842 130.36842 189.9474 
[15,] 36.47368 116.47368 182.7895 
[16,] 25.10526 102.89474 173.1053 
[17,] 14.57895 89.42105 162.5789 
[18,] 8.00000 75.78947 148.2632 
[19,] 8.00000 61.89474 127.6316 
[20,] 8.00000 48.00000 107.0000 

Это должно работать в ggplot() вызов - не проверял, потому что вы не сделали обеспечить воспроизводимый пример.

Обратите внимание, что последние ggplot2 имеет scale_fill_distiller(), который обеспечивает аналогичную функциональность с более удобным интерфейсом.

Смежные вопросы