R 在ggplot2中手动选择色调/布鲁尔颜色

R 在ggplot2中手动选择色调/布鲁尔颜色,r,colors,ggplot2,scale,hue,R,Colors,Ggplot2,Scale,Hue,我正在尝试使用R中的ggplot2库生成渐进式绘图 我所说的“渐进式”是指,出于演示目的,我想一次一条地向绘图中添加线,因此我多次生成一个包含多条线的绘图,每条线都有一条额外的绘图线 在ggplot2中,例如使用scale_COLOR_hue()效果很好,只是每一条线的颜色在不同的绘图中会发生变化。我希望保持颜色恒定(即,图1第1行有颜色X,而在图5中,第1行仍有颜色X…等等)。我可以通过使用scale_color_manual()手动声明颜色来实现这一点,但我觉得我受到了这些颜色美学的限制(“

我正在尝试使用R中的ggplot2库生成渐进式绘图

我所说的“渐进式”是指,出于演示目的,我想一次一条地向绘图中添加线,因此我多次生成一个包含多条线的绘图,每条线都有一条额外的绘图线

在ggplot2中,例如使用scale_COLOR_hue()效果很好,只是每一条线的颜色在不同的绘图中会发生变化。我希望保持颜色恒定(即,图1第1行有颜色X,而在图5中,第1行仍有颜色X…等等)。我可以通过使用scale_color_manual()手动声明颜色来实现这一点,但我觉得我受到了这些颜色美学的限制(“红色”、“蓝色”等)。我真的必须在色调调色板中找到每种颜色的十六进制值吗?还是有更简单的方法,每次添加新行时,我都可以指示scale\u color\u hue()函数以固定顺序使用调色板


谢谢,谢谢你的帮助

如果您事先知道要添加的行总数,您可以使用适当的颜色和名称创建一个比例,以便与
scale\u color\u手册

library(RColorBrewer)
library(plyr)
# a function to create a brewer palette of any length (kittens will be killed)
myBrewerPal <- function(pal = 'Spectral'){
  colorRampPalette(brewer.pal(name = pal, n = 11))
}

# function to create a named vector of colours for a given 
# vector x
create.palette <- function(x, pal = 'Spectral'){
  ux <- sort(unique(x))
  n <- length(ux)
  setNames(myBrewerPal(pal)(n), ux)

}

# create a manual scale with the named values part
myPal <- scale_colour_manual(name = 'Gear', values = create.palette(factor(mtcars$gear)))


# the base plot (no lines)
baseplot <- ggplot(mtcars, aes(x=hp, y = disp, colour = factor(gear))) + myPal
# 1 line
baseplot + geom_line(subset = .(gear==3))

您是否知道开始前需要的线路总数?
# 2 lines (gear = 3 is consistent)
baseplot + geom_line(subset = .(gear %in% 3:4))