2

spplot を使用してポリゴンをオーバーレイし、塗りつぶしのアルファ値を 10/255 に設定して、より多くのポリゴンが重なっている領域の色がより飽和するようにマップを作成しました。ポリゴンは、属性テーブルのバイナリ変数に基づいて 2 つの異なる色 (青と赤) に設定されます。したがって、色の彩度は重なり合うポリゴンの数に依存しますが、はポリゴンの青と赤のクラスの比率に依存します。

もちろん、これには簡単な組み込みの凡例がないため、ゼロから作成する必要があります。ここにあるベースグラフィックスには、これに対する優れた解決策がありますまた、kohske からのこの投稿に基づいて、ggplot でこれを行うためのあまり良くないハックも思いつきました。同様の質問がここに投稿され、いくつかの解決策を提供するために最善を尽くしましたが、確かな答えを思いつくことができませんでした. grid今、私は自分自身のために同じことをする必要がありますが、特に R を使用し、グラフィックスも使用したいと考えています。

これは私が思いついたggplotハックです

Variable_A <- 100 # max of variable
Variable_B <- 100

x <- melt(outer(1:Variable_A, 1:Variable_B)) # set up the data frame to plot from

p <- ggplot(x) + theme_classic() + scale_alpha(range=c(0,0.5), guide="none") +
  geom_tile(aes(x=Var1, y=Var2, fill="Variable_A", col.regions="red", alpha=Var1)) +
  geom_tile(aes(x=Var1, y=Var2, fill="Variable_B", col.regions="blue", alpha=Var2)) +
  scale_x_continuous(limits = c(0, Variable_A), expand = c(0, 0)) +
  scale_y_continuous(limits = c(0, Variable_B), expand = c(0, 0)) +
  xlab("Variable_A") + ylab("Variable_B") +
  guides(fill=FALSE)
p

これにより、次のようになります。

ここに画像の説明を入力

これは、2 つの理由から、私の目的には適していません。1) アルファ値が変化するため、アルファ値が高くなるにつれて、プロットされた 2 番目の色 (この場合は青) が最初の色を圧倒します。正しい凡例では、青と赤が 1:1 の対角線に沿って均等に混合されている必要があります。さらに、色は実際にはマップの色に適切に対応していません。2) で作成した地図にggplotオブジェクトを重ねる方法がわかりません。を使用してグロブを作成しようとしましたが、グロブをマップに追加する方法がわかりませんでした。latticespplotggplotGrob(p)spplot

lattice理想的な解決策は、グラフィックスを使用して同様の図を作成することです。タイルを使用するのがおそらく正しい解決策だと思いますが、アルファ値を一定に保ち、プロットされるタイルの数を左から右 (赤の場合) と下から上 (青の場合) に変化させるのが最善でしょう。したがって、色と彩度はマップと適切に一致するはずです(私は思う...)。

どんな助けでも大歓迎です!

4

1 に答える 1

2

角度を色にマッピングし、アルファを 2 つの変数の合計にマッピングするのはどうでしょうか。

d <- expand.grid(x=1:100, y=1:100)

ggplot(d, aes(x, y, fill=atan(y/x), alpha=x+y)) + 
  geom_tile() + 
  scale_fill_gradient(high="red", low="blue")+
  theme(legend.position="none", panel.background=element_blank())

ここに画像の説明を入力

于 2014-10-09T23:34:33.510 に答える