Rのggplotヒートマップに周辺合計を追加する

ブームバルデイロ

ヒートマップに合計と行の合計を追加し、ここのような他の投稿で実現するためにすでに提案されている方法に苦労したいと思います:ggplot2:要約行と列の独立した連続塗りつぶし

上記の投稿の問題は、合計(行、列)が作成されるコードがわからないことです。「#要約行と列を作成する」とマークされていますが、取得できません。

だから、もし... 1. ...誰かが私を助けて、私の投稿されたコード(以下)を参照してそこに到達するための(簡単な)方法を教えてくれたら、そして2 ....行と列の合計は、個別のカラースケールを持つことができます。

私はこれを試しました...

# create sample
scen <- 1:32
ls <- rep(1:7, length(scen))
df <- data.frame(Landscape = ls, Scenario = scen)
df$SoP <- sample(seq(-0.070, 0.070, by = 0.01),replace=T, nrow(df))
df$Landscape_Name <- LETTERS[1:7]

# create heatmap
library(ggplot2)
df.diff <- ggplot(df, aes(x = Landscape_Name, y = Scenario)) +
  geom_tile(aes(fill = SoP)) +
  geom_text(size = 3, aes(label = round(SoP,2))) + #displays cell values
  scale_fill_gradient2(low = "gold", #colors
                       mid = "white",
                       high = "grey",
                       midpoint = 0) +
  theme(panel.grid.major.x=element_blank(), #no gridlines
        panel.grid.minor.x=element_blank(), 
        panel.grid.major.y=element_blank(), 
        panel.grid.minor.y=element_blank(),
        panel.background=element_rect(fill="white"),
        axis.text.x = element_text(angle=0, hjust = 0.5,vjust=0.5, size = 8,face = NULL),
        axis.text.y = element_text(size = 8,face = NULL),
        plot.title = element_text(size=10,face="bold")) +
  ggtitle("Treatment efficiency") + 
  theme(legend.title=element_text(face="bold", size=8)) + 
  scale_x_discrete(name="Landscape", position = "top") +
  scale_y_discrete(name="Scenario") +
  labs(fill="SoP")
print(df.diff)

あなたの助けをどうもありがとう!

DS_UNI

あなたが参照した投稿、すなわちggplot2:要約行と列の独立した連続塗りつぶしで答えを説明できるかどうか見てみましょう

最初のいくつかのメモ:

  • y軸あなたは軸のラベルが消えて、なぜあなたが実行したときの継続的な尺度と考えられている数字のベクトルを、プロットしているscale_y_discreteプロットが軸に新たな価値を加えることで、私たちが決めると、正常に動作している間、(つまり、 、Total)これは問題を引き起こすScenarioので、文字ベクトルである必要があると思います
  • Scenarioを使用して列を文字列as.characterに変換すると、値の並べ替えが台無しになります。たとえば、実行してみてくださいsort(as.character(1:20))。これは、2桁の数値(01、02、03、.....)を使用することで回避できます。これは、私がそこで行ったことです。
  • 上記の回答では、合計は元のdfにバインドされていましたが、理解しやすくするために外部データとして使用します(または、少なくともこの方法の方が簡単だと思います)。

だからここに行きます:

library(ggplot2)
library(dplyr)

# pad numbers with zeros to get 2 digit numbers, this will be a string
scen <- sprintf('%02d', 1:32)
ls <- rep(1:7, length(scen))
df <- data.frame(Landscape = ls, Scenario = scen)
df$SoP <- sample(seq(-0.070, 0.070, by = 0.01),replace=T, nrow(df))
df$Landscape_Name <- LETTERS[1:7]

# create the main plot, and take a look at it
df.diff <- ggplot(df, aes(x = Landscape_Name, y = Scenario)) +
  geom_tile(aes(fill = SoP)) +
  geom_text(size = 3, aes(label = round(SoP,2))) + #displays cell values
  scale_fill_gradient2(low = "gold", #colors
                       mid = "white",
                       high = "grey",
                       midpoint = 0) 

df.diff

今、私たちは、私たちは余分にカテゴリを追加することができ、データたいLandscape_Nameとの余分なカテゴリをScenario:ように、

  • Landscape_Name(水平方向の合計)に追加されるカテゴリは、SoPそれぞれのすべての合計でScenarioあり、
  • Scenario(垂直方向の合計)に追加されるカテゴリは、SoPそれぞれのすべての合計です。Landscape_Name

基本的に必要なものgroup_bysum

h_total <- df %>% 
  group_by(Scenario) %>% 
  summarise(SoP = sum(SoP)) %>% 
  mutate(Landscape_Name = 'Total')


v_total <- df %>% 
  group_by(Landscape_Name) %>% 
  summarise(SoP = sum(SoP)) %>% 
  mutate(Scenario = 'Total')

これで、グループ化されたデータを元のプロットに追加できます。geom_point新しいデータで同じ列名を使用したためxy美学は元のプロットから継承され、使用する元のプロットとは異なる配色になります。color(ではなくfill)、選択した形状で正常に機能します。

合計のセル値も必要な場合は、それらのセル値も追加する必要があります

p <- df.diff + 
  geom_point(data = h_total, 
             aes(color = SoP), 
             size = 10, 
             shape = 19) +
  geom_point(data = v_total, 
             aes(color = SoP), 
             size = 10, 
             shape = 19) +
  scale_color_gradient2(low = "red", #colors
                        mid = "white",
                        high = "grey",
                        midpoint = 0) +
  geom_text(data = h_total, size = 3, aes(label = round(SoP,2))) +
  geom_text(data = v_total, size = 3, aes(label = round(SoP,2)))

p

最後に、テーマのカスタマイズ、タイトル、軸と凡例のラベルを追加します

p  +
  theme(panel.grid.major.x=element_blank(), #no gridlines
        panel.grid.minor.x=element_blank(), 
        panel.grid.major.y=element_blank(), 
        panel.grid.minor.y=element_blank(),
        panel.background=element_rect(fill="white"),
        axis.text.x = element_text(angle=0, hjust = 0.5,vjust=0.5, size = 8,face = NULL),
        axis.text.y = element_text(size = 8,face = NULL),
        plot.title = element_text(size=10,face="bold"),
        legend.title=element_text(face="bold", size=8))  + 
  scale_x_discrete(name="Landscape", position = "top") +
  scale_y_discrete(name="Scenario", 
                  # if you want the total to be at the bottom instead of at the top, 
                  # you can set the limits of y  with the reversed order of the categories 
                  limits = rev(c(unique(as.character(df$Scenario)), 'Total'))) + 
  # you can here change the y/x ratio 
  coord_fixed(ratio = 0.4) +
  labs(fill="SoP", color ="SoP Total") +
  ggtitle("Treatment efficiency")

私はついにプロットを保存しました ggsave(' PATH/TO/plot.jpeg', width =20, height = 40, units = 'cm')

これが出力でした

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

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

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

編集
0

コメントを追加

0

関連記事

分類Dev

RのヒートマップGGPLOT2で使用する前に条件付きで列を合計しますか?

分類Dev

ロケットチップ周辺にスバスマスターを追加する方法

分類Dev

Rでggplotを使用する場合、プロット領域の周囲のマージンを削除するにはどうすればよいですか?

分類Dev

Seabornヒートマップの横に列を追加する方法

分類Dev

ヒートマップの「グループ」の周りにボックスを描画する方法は?

分類Dev

ヒートマッププロットに凡例を追加する

分類Dev

ヒートマップヒートマップに追加の列を作成する方法

分類Dev

Rのメインヒートマップの横に単一列ヒートマップを追加する方法

分類Dev

Seabornジョイントプロットを別のデータセットの「周辺」(分布ヒストグラム)でオーバーレイする方法

分類Dev

カウント、パーセント、周辺合計を使用してテーブルをフォーマットする方法

分類Dev

カレンダーのヒートマップに凡例を追加する方法

分類Dev

Rの統合プロットの共通行をマージするヒートマップ

分類Dev

ヒートマップに値を追加する方法

分類Dev

相関ヒートマップに数値を追加する

分類Dev

ヒートマップのようなプロットに期待される色の列を追加する(seaborn)

分類Dev

Rの地理的位置のヒートマップを作成する

分類Dev

Rのヒートマップで接続されたセルの周りに等高線を描く

分類Dev

r-図のようにヒートマップを作成する方法

分類Dev

合計列の色範囲が異なるヒートマップを作成するにはどうすればよいですか?

分類Dev

Rで行列のヒートマップを描画する

分類Dev

リーフレットマップで州の周囲に境界線を追加する方法

分類Dev

Pythonで2つのガウス分布のヒートマップを効率的に計算するには?

分類Dev

Pythonを使用したマトリックス内の単一セル周辺のセルの合計

分類Dev

Rでggplotを使用して世界のヒートマップを作成する方法について質問しますか?

分類Dev

画像の上にヒートマップを抽出する

分類Dev

更新のためにヒートマップを削除する

分類Dev

海のヒートマップに日付を表示する

分類Dev

R ggplot2:ヒートマップの両側の凡例と値のカウントにカスタムテキストを追加

分類Dev

R ggplot2:ヒートマップの両側の凡例と値のカウントにカスタムテキストを追加

Related 関連記事

  1. 1

    RのヒートマップGGPLOT2で使用する前に条件付きで列を合計しますか?

  2. 2

    ロケットチップ周辺にスバスマスターを追加する方法

  3. 3

    Rでggplotを使用する場合、プロット領域の周囲のマージンを削除するにはどうすればよいですか?

  4. 4

    Seabornヒートマップの横に列を追加する方法

  5. 5

    ヒートマップの「グループ」の周りにボックスを描画する方法は?

  6. 6

    ヒートマッププロットに凡例を追加する

  7. 7

    ヒートマップヒートマップに追加の列を作成する方法

  8. 8

    Rのメインヒートマップの横に単一列ヒートマップを追加する方法

  9. 9

    Seabornジョイントプロットを別のデータセットの「周辺」(分布ヒストグラム)でオーバーレイする方法

  10. 10

    カウント、パーセント、周辺合計を使用してテーブルをフォーマットする方法

  11. 11

    カレンダーのヒートマップに凡例を追加する方法

  12. 12

    Rの統合プロットの共通行をマージするヒートマップ

  13. 13

    ヒートマップに値を追加する方法

  14. 14

    相関ヒートマップに数値を追加する

  15. 15

    ヒートマップのようなプロットに期待される色の列を追加する(seaborn)

  16. 16

    Rの地理的位置のヒートマップを作成する

  17. 17

    Rのヒートマップで接続されたセルの周りに等高線を描く

  18. 18

    r-図のようにヒートマップを作成する方法

  19. 19

    合計列の色範囲が異なるヒートマップを作成するにはどうすればよいですか?

  20. 20

    Rで行列のヒートマップを描画する

  21. 21

    リーフレットマップで州の周囲に境界線を追加する方法

  22. 22

    Pythonで2つのガウス分布のヒートマップを効率的に計算するには?

  23. 23

    Pythonを使用したマトリックス内の単一セル周辺のセルの合計

  24. 24

    Rでggplotを使用して世界のヒートマップを作成する方法について質問しますか?

  25. 25

    画像の上にヒートマップを抽出する

  26. 26

    更新のためにヒートマップを削除する

  27. 27

    海のヒートマップに日付を表示する

  28. 28

    R ggplot2:ヒートマップの両側の凡例と値のカウントにカスタムテキストを追加

  29. 29

    R ggplot2:ヒートマップの両側の凡例と値のカウントにカスタムテキストを追加

ホットタグ

アーカイブ