ggplot2で複数のレイヤーをプロットする

rnd

ggplot2 "geom_raster"関数を使用して、2つのdata.frameを2つのレイヤーとしてプロットしようとしています。最上層には、下層を表示するために「透明」に設定されたNA値が含まれています。scale_fill_xxx関数は2回使用できないため、次のコードを試しました(この投稿に基づく:ggplot2-オーバーレイされたプロットに2つの異なるカラースケールを使用):

library(ggplot2)

df1 <- data.frame(x=rep(c(1,2,3),times=3), y=c(1,1,1,2,2,2,3,3,3), data= c(NA,4,9,NA,2,7,NA,NA,3))
df2 <- data.frame(x=rep(c(1,2,3),times=3), y=c(1,1,1,2,2,2,3,3,3), data= c(1,NA,NA,2,NA,NA,1,2,NA))

ggplot() + 
geom_raster(data=df1, aes(y= y, x= x, fill= data)) + 
scale_fill_gradientn(name="df1", colours=c("red", "blue"), na.value = "transparent") + 
geom_raster(data= df2, aes(y= y, x= x, colour= as.factor(data))) + 
scale_colour_manual(values = c("green", "black"), name= "df2", labels= c("Class 1", "Class 2"), na.value="transparent")

問題は、「colour」/「scale_colour_manual」ソリューションが私が期待するものを返さないことです(代わりに濃い灰色のプロットを返します)。df1の「データ」列を赤から青のスケールで表し(NAは透明である必要があります)、df2の「データ」列をクラス番号(「1」=緑および「2」=黒)で表すようにします。 )。

誰かが私の手順の何が問題になっているのかを理解するのを手伝ってもらえますか?

bVa

ここに解決策があります:

df3 = merge(df1, df2, by = c("x","y"))
names(df3)[names(df3) == "data.x"] <- "data.1"
names(df3)[names(df3) == "data.y"] <- "data.2"
df3$data = df3$data.1
df3$data[is.na(df3$data)] = df3$data.2[is.na(df3$data)]

myGrad <- colorRampPalette(c('blue','red')) # color gradient
min_value = min(df3$data[df3$data >2]) # minimum value except 1 and 2
max_value = max(df3$data) # maximum value 
param = max_value - min_value + 1 # number of colors in the gradient


ggplot(df3, aes(x, y, fill = data)) + geom_raster() + 
scale_fill_gradientn(colours=c("green","black", myGrad(param)), 
values = rescale(c(1, 2, seq(min_value, max_value, 1))), na.value = "transparent")

3x3画像

私はあなたがより高い値と範囲でこのプロットを使うと思います、私は5x5マトリックスで試しました:

set.seed(123)
df4 = data.frame(x=rep(c(1,2,3,4,5),5), y=c(rep(1,5), rep(2,5), rep(3,5), rep(4,5), rep(5,5)), 
data = sample(c(1:20), 25, prob = c(0.2,0.2,rep(0.6/18,18)), replace = T))
min_value = min(df4$data[df4$data >2])
max_value = max(df4$data)
param = max_value - min_value + 1 

ggplot(df4, aes(x, y, fill = data)) + geom_raster() + 
scale_fill_gradientn(colours=c("green","black", myGrad(param)), 
values = rescale(c(1, 2, seq(min_value, max_value, 1))), na.value = "transparent")

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

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

ggplot2で累積レイヤープロットを作成する方法

分類Dev

ggplot2を使用して、複数のstat_binレイヤーを持つヒストグラムプロットに凡例を追加する

分類Dev

ggplot2で複数の行をプロットする

分類Dev

単一のggplot2でレイヤー(密度プロットと垂直線)を整列させる方法

分類Dev

単一のggplot2でレイヤー(密度プロットと垂直線)を整列させる方法

分類Dev

1つのggplot2プロットに2つのgeomレイヤーの凡例を追加するにはどうすればよいですか?

分類Dev

ggplot2で複数のプロットの幅を制御する方法は?

分類Dev

ggplot2で複数の線+リボンプロットを描画する

分類Dev

同じページに複数のggplot2をプロットする

分類Dev

ggplot2で異なるスケールで複数の図をプロットする

分類Dev

ggplot2でforループを使用して、データフレーム内に複数のグラフをプロットする

分類Dev

ggplot2を使用して、カプランマイヤープロットの下に「リスクのある数値」テーブルを配置する方法

分類Dev

Rでggplot2を使用して2つのプロットをオーバーレイする

分類Dev

CNNでドロップアウトする前に複数のConv2Dレイヤーをスタックする背後にある直感

分類Dev

ggplot2:ループを使用して複数のボックスをプロットする

分類Dev

複数の要素を含むggplot2プロットに凡例を追加する

分類Dev

ggplot2を使用して2次軸に逆バープロットで複数の時系列をプロットする方法は?

分類Dev

ggplot2スタックバープロット:バーを複数の次元で並べ替える

分類Dev

ggplot2プロット間に複数の曲線を追加する

分類Dev

ループ内の複数のgeom_segmentでggplot2プロットを強化しますか?

分類Dev

ggplot2プロットにレイヤーを追加するプロセスをアニメーション化する

分類Dev

ggplot2:サブセットを使用して複数のレイヤーの後の散布図の凡例を手動で変更

分類Dev

Rで複数のCSVを読み取り、ggplot2でプロットする

分類Dev

ggplot2の1つのレイヤーのみのツールチップを表示し、プロットします

分類Dev

ggplot2を使用してRで複数の回答調査項目をプロットする方法は?

分類Dev

複数のレイヤーでポップアップを表示する-openlayers

分類Dev

R ggplot2:線の長さが異なる複数のROCプロットのデータフレームを作成します

分類Dev

ggplot2の複数のレイヤーの凡例

分類Dev

ggplot:複数のレイヤーを持つファセットマップ

Related 関連記事

  1. 1

    ggplot2で累積レイヤープロットを作成する方法

  2. 2

    ggplot2を使用して、複数のstat_binレイヤーを持つヒストグラムプロットに凡例を追加する

  3. 3

    ggplot2で複数の行をプロットする

  4. 4

    単一のggplot2でレイヤー(密度プロットと垂直線)を整列させる方法

  5. 5

    単一のggplot2でレイヤー(密度プロットと垂直線)を整列させる方法

  6. 6

    1つのggplot2プロットに2つのgeomレイヤーの凡例を追加するにはどうすればよいですか?

  7. 7

    ggplot2で複数のプロットの幅を制御する方法は?

  8. 8

    ggplot2で複数の線+リボンプロットを描画する

  9. 9

    同じページに複数のggplot2をプロットする

  10. 10

    ggplot2で異なるスケールで複数の図をプロットする

  11. 11

    ggplot2でforループを使用して、データフレーム内に複数のグラフをプロットする

  12. 12

    ggplot2を使用して、カプランマイヤープロットの下に「リスクのある数値」テーブルを配置する方法

  13. 13

    Rでggplot2を使用して2つのプロットをオーバーレイする

  14. 14

    CNNでドロップアウトする前に複数のConv2Dレイヤーをスタックする背後にある直感

  15. 15

    ggplot2:ループを使用して複数のボックスをプロットする

  16. 16

    複数の要素を含むggplot2プロットに凡例を追加する

  17. 17

    ggplot2を使用して2次軸に逆バープロットで複数の時系列をプロットする方法は?

  18. 18

    ggplot2スタックバープロット:バーを複数の次元で並べ替える

  19. 19

    ggplot2プロット間に複数の曲線を追加する

  20. 20

    ループ内の複数のgeom_segmentでggplot2プロットを強化しますか?

  21. 21

    ggplot2プロットにレイヤーを追加するプロセスをアニメーション化する

  22. 22

    ggplot2:サブセットを使用して複数のレイヤーの後の散布図の凡例を手動で変更

  23. 23

    Rで複数のCSVを読み取り、ggplot2でプロットする

  24. 24

    ggplot2の1つのレイヤーのみのツールチップを表示し、プロットします

  25. 25

    ggplot2を使用してRで複数の回答調査項目をプロットする方法は?

  26. 26

    複数のレイヤーでポップアップを表示する-openlayers

  27. 27

    R ggplot2:線の長さが異なる複数のROCプロットのデータフレームを作成します

  28. 28

    ggplot2の複数のレイヤーの凡例

  29. 29

    ggplot:複数のレイヤーを持つファセットマップ

ホットタグ

アーカイブ