カラー1からカラー2までのn色のグラデーション


108

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

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

私はよく知っています:

brewer.pal(8, "Spectral") 

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


1
scalesパッケージが必要だと思います。最新のggplot2バージョンは、基礎となるコードでこれに依存しています。あなたが必要としない、すなわちggplot2を使用するスケールに、あなただけの必要なスケールのパッケージを。スケールの関数がどのように機能するかはわかりません:-)
Gavin Simpson

1
あなたがbase具体的にリクエストしてからトピック外ですが、値をグラデーションにマッピングするのにcolourvaluesCRANでも)特に便利だと思います。また、かなり軽量です(によって異なりますRcpp)。
MichaelChirico

@MichaelChiricoトピックから外れていませんが、私が使用していたパッケージがグリッドではなくベース(wordcloudだと思う)で書かれているため、ベースプロットを使用する必要があるということです。おそらく回答として投稿しますか?
タイラーリンカー、

回答:


179

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)

ここに画像の説明を入力してください


14
たとえばbrewer.pal(8, "Spectral")、既存のパレットに特に夢中になっている場合は、結果の色のベクトルを指定しcolorRampPaletteて、そのランプに沿ってより多くの色を生成できます。次に例を示しますcolorRampPalette(brewer.pal(8, "Spectral"))
jbaums 2014

ブロックの対角線または形状の色はどうですか?@thelatemail
user3631848

50

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

より拡張された「ヒートマップ」タイプの外観には、次のことができます。

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

結果の画像:

ここに画像の説明を入力してください


色で斜めの線や形を指定することもできますか?@jsol
user3631848

私はこのパレットが好きですが、緑が多すぎて黄色がほとんどありません。これを修正する方法はありますか?
Herman Toothrot

1
「springgreen」や「royalblue」などのオプションが表示されることを期待していなかった人のために追加します。使用可能なすべての色は、colors()を実行してリストとして返すことができます。
jadki 2018年

20

以下を試してください:

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)

ここに画像の説明を入力してください


この関数はRベースのデフォルトとして追加する必要があります!
Simon C.

7

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

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

グレースケールの詳細はこちら。

追加されました

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

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


2
この答えは黒から白には優れていますが、色に一般化することはできません。この貴重な情報を追加していただきありがとうございます。+1
タイラーリンカー2014

カラーと白黒の両方で機能するカラーグラデーションと色相のより良いオプションを提供するリンクを追加しました。
Anusha

@DavidDelMonteファイルのコピーが保存されている可能性がありますが、更新されたリンクはありません。どこにアップロードすればよいかわからない。
Anusha

2
@DavidDelMonteは- web.archive.org/web/20141111182737/http://www.stat.tamu.edu/...最初常にarchive.org確認してください。
thelatemail 2015年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.