将连续的brewer调色板插入为ggplot2的图例

use*_*827 2 r ggplot2

我有一个情节,在直方图上叠加了几个观察结果.按顺序收集观察结果,我需要观察它们的收集顺序.使用a很简单scale_colour_brewer.问题是,连续啤酒调色板的最大长度是9.我有多达20个观察的例子,我不知道如何使用插值颜色.下面是一些代码,用于显示少于10个点的所需输出.

# Setting this to be > 9 will cause a warning and not produce the desired result.
observations = 9
subset <-1:observations
res = data.frame(x_data = rnorm(5000),TestID=1:5000)
ggplot(res,aes(x=x_data)) + 
  stat_bin(aes(y=..density..))+
  stat_density(colour="blue", fill=NA)+
  geom_point(data = res[res$TestID %in% subset,], 
             aes(x = x_data, 
                 y = 0, 
                 colour = as.factor(res$TestID[res$TestID %in% subset])
             ),
             size = 5) +scale_colour_brewer("Fancy title", type="seq", palette='Reds')
Run Code Online (Sandbox Code Playgroud)

我知道随着观察数量的增加,这个情节将变得难以阅读.但是,我相信有多达20种颜色,应该可以在我的应用程序中解释结果.

jor*_*ran 5

扩展我的评论,你需要使用colorRampPalette:

library(RColorBrewer)
blues_fun <- colorRampPalette(brewer.pal(9,"Blues"))
> blues_fun(20)
 [1] "#F7FBFF" "#ECF4FB" "#E1EDF8" "#D7E6F4" "#CDE0F1" "#C1D9ED" "#B0D2E7" "#A0CAE1" "#8BBFDC" "#75B3D8" "#62A8D2" "#519CCB"
[13] "#4090C5" "#3282BD" "#2474B6" "#1966AD" "#0E59A2" "#084B94" "#083D7F" "#08306B"
Run Code Online (Sandbox Code Playgroud)

然后通过scale_colour_manual以下方式构建比例:

ggplot(res,aes(x=x_data)) + 
  stat_bin(aes(y=..density..))+
  stat_density(colour="blue", fill=NA)+
  geom_point(data = res[res$TestID %in% subset,], 
             aes(x = x_data, 
                 y = 0, 
                 colour = as.factor(res$TestID[res$TestID %in% subset])
             ),
             size = 5) + 
  scale_colour_manual("Fancy title",values = blues_fun(9))
Run Code Online (Sandbox Code Playgroud)

您只需将结果颜色移交给values参数即可.