18

このプロットがあるとします:

ggplot(iris) + geom_point(aes(x=Sepal.Width, y=Sepal.Length, colour=Sepal.Length)) + scale_colour_gradient()

ここで受け入れられた回答の下に示されているプロットのように、カラースケールを離散化する正しい方法は何ですか( ggplot stat_bin2d プロットのグラデーションブレーク)?

ggplot は離散値を正しく認識し、これらに離散スケールを使用しますが、私の質問は、連続データがあり、そのデータに離散カラー バーが必要かどうかです (各正方形が値に対応し、正方形がグラデーションで色付けされています)。それを行う最良の方法は?離散化/ビニングはggplotの外部で発生し、個別の離散値の列としてデータフレームに配置する必要がありますか、またはggplot内でそれを行う方法はありますか? 私が探しているものの例は、ここに示すスケールに似ています: ここに画像の説明を入力

geom_tileただし、 /heatmapのようなものではなく、散布図をプロットしています。

ありがとう。

4

2 に答える 2

8

以下を試すことができます。サンプルコードを以下で適切に変更しました。

#I am not so great at R, so I'll just make a data frame this way
#I am convinced there are better ways. Oh well.
df<-data.frame()
for(x in 1:10){
  for(y in 1:10){
    newrow<-c(x,y,sample(1:1000,1))
    df<-rbind(df,newrow)
  }
}
colnames(df)<-c('X','Y','Val')


#This is the bit you want
p<- ggplot(df, aes(x=X,y=Y,fill=cut(Val, c(0,100,200,300,400,500,Inf))))
p<- p + geom_tile() + scale_fill_brewer(type="seq",palette = "YlGn")
p<- p + guides(fill=guide_legend(title="Legend!"))

#Tight borders
p<- p + scale_x_continuous(expand=c(0,0)) + scale_y_continuous(expand=c(0,0))
p

データを離散化するためのカットの戦略的な使用に続いて、物事をきれいにするためのカラーブリューワーの使用に注意してください。

結果は次のようになります。

離散化された色の 2D ヒートマップ

于 2015-08-06T05:52:45.533 に答える