1

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

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

在 ggplot2 中,例如使用 scale_colour_hue() 效果很好,除了每条线的颜色随图而变。我想保持颜色不变(即情节 1 第 1 行有颜​​色 X,在情节 5 中,第 1 行仍然有颜色 X...等)。我可以通过使用 scale_colour_manual() 手动声明颜色来实现这一点,但我觉得我受到这些颜色的美感(“红色”、“蓝色”等)的限制。我真的必须在色调调色板中找到每种颜色的十六进制值,还是有更简单的方法,我可以指示 scale_colour_hue() 函数在每次添加新行时以固定顺序使用其调色板?

谢谢,感谢帮助!

4

1 回答 1

3

如果您事先知道要添加的总行数,则可以使用适当的颜色和名称创建一个比例尺以用于scale_colour_manual

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))

在此处输入图像描述

于 2013-08-23T06:43:42.653 回答