1

R の ggplot2 ライブラリを使用してプログレッシブ プロットを生成しようとしています。

「プログレッシブ」とは、プレゼンテーションの目的で、一度に 1 行ずつプロットに線を追加したいということです。そのため、多くの線を含む単一のプロットを複数回生成し、それぞれに余分な線をプロットします。

ggplot2 では、たとえば scale_colour_hue() を使用するとうまく機能しますが、各行の色がプロットごとに変わる点が異なります。色を一定に保ちたい (つまり、プロット 1 行 1 には色 X があり、プロット 5 では、行 1 にはまだ色 X がある...など)。scale_colour_manual() を使用して手動で色を宣言することでそれを実現できますが、これらの色 (「赤」、「青」など) の美学によって制限されているように感じます。色相パレットでこれらの色のそれぞれの 16 進値を本当に見つける必要がありますか、それとも新しい行を追加するたびにそのパレットを固定順序で使用するように 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 に答える