2016-02-01 51 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()呼叫工作 - 沒有測試,因爲你沒有提供一個可重現的例子。

請注意,最近的ggplot2scale_fill_distiller(),它提供了一個類似的功能與更方便的界面。