2017-06-05 11 views
0

エンドポイントをcolorRampに指定して、他のデータの範囲に関係なく、値が一貫して単一の色にマッピングされるようにすることはできますか?colorRampエンドポイントを指定する

plotlyに対話型相関プロットを作成しようとしています。ここにいくつかのサンプルデータがあります。

set.seed(1) 
m <- 4 
cm <- matrix(runif(m**2,-1,1), 
      nrow=m, ncol=m, 
      dimnames=list(letters[1:m],letters[1:m])) 
diag(cm) <- 1 

cm 
#   a   b   c   d 
# a 1.0000000 -0.5966361 0.2582281 0.3740457 
# b -0.2557522 1.0000000 -0.8764275 -0.2317926 
# c 0.1457067 0.8893505 1.0000000 0.5396828 
# d 0.8164156 0.3215956 -0.6468865 1.0000000 

は、私は基本的にこれのインタラクティブバージョンを作成しようとしています:

library(corrplot) 
corrplot(cm,method='shade') 

Non-interactive version of desired output

は、ここで私が作成したインタラクティブな相関プロット(ハックのようなもの)です。

div_colors <- c('dark red','white','navy blue') 
grid_labels <- matrix(paste0('Cor(', 
           do.call(paste,c(expand.grid(rownames(cm),colnames(cm)), sep=', ')), 
           '): ', 
           t(round(cm,2)) 
          ), 
          ncol=m,byrow=TRUE) 
library(plotly) 
plot_ly(x = colnames(cm), 
     y = rownames(cm), 
     z = cm, 
     colors = colorRamp(div_colors), 
     type='heatmap', 
     hoverinfo='text', 
     text = grid_labels 
     ) %>% layout(yaxis=list(autorange='reversed')) 

enter image description here

私の問題はc(-1,1)colorRampエンドポイントを強制せず、白色が観察最小限に0の相関、及び暗赤色マップと一致しないことがあるのではなく、-1。 @rawrコメントで述べたよう

+1

[zminとzmax](https://plot.ly/r/reference/#heatmap- zmin)? @rawrが動作します。 – rawr

+0

もしあなたがそれを書きたいなら、私はそれを答えとして受け入れます。種類はほとんどありませんが、例のいずれにも該当しませんでした(例:[here](https://plot.ly/r/heatmaps/#custom-colorscales))。 – C8H10N4O2

答えて

1

、溶液は同様に、set zmin and zmaxである:所望の結果を生成

plot_ly(x = colnames(cm), 
     y = rownames(cm), 
     z = cm, 
     zmin=-1,       # <============ 
     zmax=1,       # <============ 
     colors = colorRamp(div_colors), 
     type='heatmap', 
     hoverinfo='text', 
     text = grid_labels 
) %>% layout(yaxis=list(autorange='reversed')) 

。 (凡例バーはもっと短いですが、おそらく、新しいバージョンのplotlyのデフォルトサイズが変更されたためです)。enter image description here

関連する問題