2016-07-14 8 views
0

私は、1つの従属変数(y)が独立変数x1と〜対数直線関係にあり、独立変数x2と〜シグモイド関係にあるデータフレームを持っています。1つのログ軸を持つヒートマップ

df<-data.frame(x1 = rep(c(0:10),11), 
      x2 = rep(c(0:10), each=11), 
      logx1 = log(rep(c(0:10),11)+1), 
      y = 0) 

for(i in 1:nrow(df)) df[i,4] = exp(df[i,2]) * (1/(1+exp(-df[i,1]))) 

私はヒートマップを使用してx1とx2の変化に対するyの変化を表示したい:

ggplot(df, aes(x=x1, y=x2, fill=y))+ 
theme_bw()+ 
scale_fill_distiller(palette = "Spectral")+ 
geom_tile(size=0.01) 

が、それはX1に対してYの変化を見ることは難しいので、私

ggplot(df, aes(x=logx1, y=x2, fill=y))+ 
theme_bw()+ 
scale_fill_distiller(palette = "Spectral")+ 
geom_tile(size=0.01)+ 

が、色の連続面とは反対に、それは、データ間の大空間になり:対数スケールでX1をプロットしたい gaps in heat map

私が試してみた:

:軸自体を変形

geom_raster(interpolate = TRUE 

df$x1<-factor(df$x1, levels = sort(unique(df$x1))) 

を補間とラスタとしてプロット:因子X1を変換しプロット

scale_x_continuous(breaks = c(0,1,10)+1, limits = c(0,10)+1, trans = 'log') 

chan coord_equal()およびcoord_fixed()を用いてgingプロットサイズを計算する。 x1の0.001変更ごとにyを計算してください)

しかし、私は離れて行くスペースを得ることができません!

私は必ずしもヒートマップ上で販売されていないんだけど、私はx1とx2の両方に対してYの変動を表示する必要があると私は、あなたの例のように、

答えて

1

y ~ exp(x)もしggplotでそれを行う必要がありますログスケールにy(xではない)を置くと、その関係を表示するのに適しているかもしれません。例えば。

ggplot(df, aes(x=x1, y=x2, fill=log(y))) + 
    theme_bw() + 
    scale_fill_distiller(palette = "Spectral") + 
    geom_tile(size=0.01) 

heatmap 1 代わりに、あなたは(あなたの例では、それは実際のyと対数線形関係にあり、X2、およびX1のS字状だことに注意してください)指数関数的規模でのxを表示することができます。指数スケールでx2の連続サーフェスヒートマップを表示する場合は、指数スケールで等間隔に配置されたx2のポイントが必要です。等間隔の点を得る1つの方法は、pretty()関数です。例えば。

対数軸上のYプロット
# generate new data with x2 equally space on exp scale 
newdat <- expand.grid(x1 = pretty(df$x1, 10), exp_x2 = pretty(exp(df$x2), 10)) 

# backtransform exp_x2 
newdat$x2 <- log(newdat$exp_x2) 

# generate y values (using raw x2 values, not exp_x2) 
newdat$y <- exp(newdat$x2) * (1/(1+exp(-newdat$x1))) 

# plot  
ggplot(newdat, aes(x=x1, y=exp_x2, fill=y)) + 
    theme_bw() + 
    scale_fill_distiller(palette = "Spectral") + 
    geom_tile(size=0.01) 

heatmap 2

+0

は私が持っている実際のデータには不適切であるが、確かにこの例(MWE)のための良い解決策であろう。 私は2番目の投稿と同様のものを使用して終了しました。 – cmhoove14

関連する問題