6

異なるデータフレームからのデータを使用して、ggplot2 から複数の stat_contour プロットをオーバーレイすることは可能ですか?

さまざまなジオメトリをオーバーレイするための解決策を読みましたが、これには特に stat_contour を使用したいと考えています。

X 変数と Y 変数は、両方のデータ セットで同じです。使用するサンプル データ:

# some sample data
require(ggplot2)
require(reshape2)

v1 <- melt(volcano)
v2 <- v1
v2$value <- v2$value*1.5

したがって、それぞれを個別にプロットすると次のようになります。

ggplot(v1, aes(x = Var1, y = Var2, z = value)) +
+   stat_contour(aes(color = ..level..)) + scale_colour_gradient(low = "white", high="#ff6666")

ggplot(v2, aes(x = Var1, y = Var2, z = value)) +
+   stat_contour(aes(color = ..level..)) + scale_colour_gradient(low = "white", high="#A1CD3A")

これらの密度プロットを同じグラフに重ねる方法はありますか?

因子変数を作成し、各セットに異なる値を割り当ててからスタックしようとしましたが、X と Y (ここでは Var 1 と Var2) ごとに複数の値があるため、エラーが発生します。

お手伝いありがとう!

4

1 に答える 1

8

ggplot2 で 2 つの等高線データセットをオーバーレイするためのいくつかのオプションを次に示します。1 つの重要な注意点 (@Drew Steen によって指摘されているように) はcolour、同じプロットに 2 つの別個のスケールを含めることはできないということです。

# Add category column to data.frames, then combine.
v1$category = "A"
v2$category = "B"
v3 = rbind(v1, v2)

p1 = ggplot(v3, aes(x=Var1, y=Var2, z=value, colour=category)) +
     stat_contour(binwidth=10) +
     theme(panel.background=element_rect(fill="grey90")) +
     theme(panel.grid=element_blank()) +
     labs(title="Plot 1")

p2 = ggplot(v3, aes(x=Var1, y=Var2, z=value, colour=category)) +
     stat_contour(aes(alpha=..level..), binwidth=10) +
     theme(panel.background=element_rect(fill="white")) +
     theme(panel.grid=element_blank()) +
     labs(title="Plot 2")

p3 = ggplot(v3, aes(x=Var1, y=Var2, z=value, group=category)) +
     stat_contour(aes(color=..level..), binwidth=10) +
     scale_colour_gradient(low="white", high="#A1CD3A") +
     theme(panel.background=element_rect(fill="grey50")) +
     theme(panel.grid=element_blank()) +
     labs(title="Plot 3")

p4 = ggplot(v3, aes(x=Var1, y=Var2, z=value, linetype=category)) +
     stat_contour(aes(color=..level..), binwidth=10) +
     scale_colour_gradient(low="white", high="#A1CD3A") +
     theme(panel.background=element_rect(fill="grey50")) +
     theme(panel.grid=element_blank()) +
     labs(title="Plot 4")

library(gridExtra)
ggsave(filename="plots.png", height=8, width=10,
       plot=arrangeGrob(p1, p2, p3, p4, nrow=2, ncol=2))
  • プロット 1: 2 つのレイヤーを異なる単色でプロットします。aes(colour=category)
  • プロット 2:..level..アルファ透明度を使用して表示します。2 つの異なる色のグラデーションを持つミミック。
  • プロット 3: 両方の層を同じ勾配でプロットします。レイヤーを区別するaes(group=category)
  • プロット 4: 単色のグラデーションを使用しますが、線種でレイヤーを区別します。

ここに画像の説明を入力

于 2013-08-14T21:58:33.677 に答える