120

私はよくggplot2グラデーションをうまく処理します(例についてはここをクリックしてください)。私はベースで作業する必要があり、そこでカラーグラデーションを作成するためにも使用できると思いますscalesが、その方法についてはかなり外れています。基本的な目標は、x色からy色までの範囲のn色のパレットを生成することです。ただし、ソリューションはベースで機能する必要があります。これが出発点でしたが、nを入力する場所がありません。

 scale_colour_gradientn(colours=c("red", "blue"))

私はよく知っています:

brewer.pal(8, "Spectral") 

からRColorBrewer。グラデーションを処理する方法に似たアプローチをもっと探しています。ggplot2つまり、これらの2つの色があり、途中で15色が必要です。どうやってやるの?

4

5 に答える 5

198

colorRampPaletteここであなたの友達になることができます:

colfunc <- colorRampPalette(c("black", "white"))
colfunc(10)
# [1] "#000000" "#1C1C1C" "#383838" "#555555" "#717171" "#8D8D8D" "#AAAAAA"
# [8] "#C6C6C6" "#E2E2E2" "#FFFFFF"

そして、それが機能することを示すために:

plot(rep(1,10),col=colfunc(10),pch=19,cex=3)

ここに画像の説明を入力

于 2012-11-12T23:21:54.087 に答える
55

前の回答を拡張するだけでcolorRampPalette、2 つ以上の色を処理できます。

したがって、より拡張された「ヒート マップ」タイプの外観を得るには....

colfunc<-colorRampPalette(c("red","yellow","springgreen","royalblue"))
plot(rep(1,50),col=(colfunc(50)), pch=19,cex=2)

結果の画像:

ここに画像の説明を入力

于 2015-05-29T15:41:17.897 に答える
22

次のことを試してください。

color.gradient <- function(x, colors=c("red","yellow","green"), colsteps=100) {
  return( colorRampPalette(colors) (colsteps) [ findInterval(x, seq(min(x),max(x), length.out=colsteps)) ] )
}
x <- c((1:100)^2, (100:1)^2)
plot(x,col=color.gradient(x), pch=19,cex=2)

ここに画像の説明を入力

于 2016-02-26T16:04:10.147 に答える
8

上記の回答は役に立ちますが、グラフでは黒の暗いグラデーションを区別するのが困難です。私が見つけた1つの代替手段は、次のように灰色のグラデーションを使用することです

palette(gray.colors(10, 0.9, 0.4))
plot(rep(1,10),col=1:10,pch=19,cex=3))

グレースケールの詳細については、こちらをご覧ください。

追加した

上記のコードを青や黒などのさまざまな色に使用した場合、グラデーションはそれほど明確ではありませんでした。 heat.colors()より便利なようです。

このドキュメントには、より詳細な情報とオプションが記載されています。pdf

于 2014-09-24T11:30:51.070 に答える