2017-08-15 7 views
1

私はggplotヒートマップ - ノーカラーバリエーション

library(ggplot2) 

my_df <- data.frame(var_1 = sample(c('a','b', 'c'), 1000, replace = TRUE), 
        var_2 = sample(c('foo', 'bar', 'foo_bar'), 1000, replace = TRUE), 
        var_3 = sample(c(1,0), 1000, replace = TRUE)) 

ggplot(data = my_df, aes(x = var_1, y = var_2, fill = var_3)) + 
    geom_tile() 

を使用して簡単なヒートマップをプロットしたいと思いますがここで私が得るものです: Heat map

は色のバリエーションが存在しないところ、私は理解することはできません。私はsample機能の行数を変更しましたが、ヒートマップでは常に2色しか表示されませんでした。助言がありますか?

答えて

2

あなたが望む統計的変革を計算層でgeom_tileを交換し、ベースR.からdplyr.summariseまたはaggregateを使用することができますが、data.tableを使用していることを行う方法を示しています

3

これは、var_3 = sample(c(1,0), 1000, replace = TRUE)のベクトルから入力する値が0または1であるためです。その代わり場合は、0と1の間の値を選択したい、代わりにこのコードを使用します。

var_3 = sample(0:10, 1000, replace = TRUE)/10

+0

ありがとうございました。私は 'fill'に1と0の割合をどのように反映させるのですか?私は手動で行う方法を知っています。' ggplot'が自動的に行うことができますか? – user1700890

+0

どういう意味ですか? 'fill = var_3'を設定したときに自動的に起こるべきではありませんか? – sweetmusicality

2

を要因により、1と0の割合をプロットするには、それぞれの組み合わせに対してvar_3の平均値を計算する必要がありますvar_1およびvar_2

ggplot(data = my_df, aes(x = var_1, y = var_2)) + 
    stat_summary_2d(fun = "mean", geom = "tile", 
        aes(z = var_3, fill = ..value..)) 

enter image description here:ここで私はあなたにも

library(data.table) 
setDT(my_df) 
ggplot(data = my_df[, var_3 := mean(var_3), by = .(var_1,var_2)], 
     aes(x = var_1, y = var_2, fill = var_3)) + 
    geom_tile()