2016-12-19 9 views
11

私は最近RとRstudioを更新しました。当然、私が書いたスクリプトの負荷は壊れています。plot_ly並べ替える行列を無効にする

特に私の問題の原因の1つは、以下のスクリプトです。これまではヒートマップを正確にとして出力していましたが、マトリックスを作るために与えた値のcsvに現れました。後のバージョンでは、物事を注文する方法が変更されたようです。列とそのラベルを昇順に並べ替えることで、順序がずれています。列の並び替えを防止する方法、または列を並べ替える方法を指定する方法はありますか?

マイナーな審美的な問題はあまり問題にはなりません。

ここでは、コードは次のとおり

library(ggplot2) 
library(plotly) 
library(RColorBrewer) 
# Read in data 
library(readr) 


adjwallace <- read.csv() # see the link for the actual data http://pastebin.com/bBLs8uLt 


rownames(adjwallace_recluster)[17] <- "Species" #Rename STree 
names(adjwallace_recluster)[17] <- "Species" 


# Preferences for xaxis 
font.pref <- list(
    size = 20, 
    family = "Arial, sans-serif", 
    color = "black" 
) 

x.axisSettings <- list(
    title = "", 
    zeroline = FALSE, 
    showline = FALSE, 
    showticklabels = TRUE, 
    tickfont = font.pref, 
    showgrid = TRUE 
) 

# Preferences for yaxis 
y.axisSettings <- list(
    title = "", 
    zeroline = FALSE, 
    showline = FALSE, 
    showticklabels = TRUE, 
    tickfont = font.pref, 
    showgrid = TRUE 
) 

margins <- list(
    l = 50, 
    r = 10, 
    b = 50, 
    t = 10, 
    pad = 1 
) 

# Plot graph as a heatmap 
p <-plot_ly(z = ~data.matrix(adjwallace), 
     colors = "YlOrRd", 
     name = "Adjusted Wallace Coefficients", 
     x = names(adjwallace), 
     y = names(adjwallace), 
     colorbar = list(title = "Adjusted Wallace <br> Coefficient", titlefont = font.pref), 
     type = "heatmap") %>% 
     layout(xaxis=x.axisSettings, 
     yaxis=y.axisSettings, 
     plot_bgcolor='rgba(0,0,0,0)', 
     paper_bgcolor='rgba(0,0,0,0)', 
     margin = margins 
     ) 
p 

とイメージこのコードが(xおよびy軸の順序に注意してください)を生成するを使用:

enter image description here

、スクリプトが今生成: enter image description here

答えて

5

新しいヒートマップと古いヒートマップの値は実際に同じです。あなたのラベルは単に並べ替えられています。これは、現在のバージョンのplotly(私は他人に "バグ"と呼ぶかどうかを決定させる)の奇妙な動作です。軸ラベルはアルファベット順に並べ替えられます。ここでは明確にそれを示してMWEです:

dat <- matrix(c(1,2,3), nrow = 30, ncol = 30) 
dimnames(dat) <- list(rownames(dat, FALSE, "r"), 
         colnames(dat, FALSE, "c")) 
plot_ly(z=dat, x=colnames(dat), y = rownames(dat), 
     type = "heat map") 

があるためplotlyの現在のバージョンでは、この動作のため、私の代わりにggplot2を使用してお勧めします。次のように実際には、少数のラインであなたの元のプロットに到着することができます

adjwallaceX <- melt(t(as.matrix(adjwallace))) 
ggplot(data = adjwallaceX, aes(x = Var1, y = Var2)) + 
    geom_tile(aes(fill = value)) + 
    coord_equal() + 
    scale_fill_gradientn(colours = rev(brewer.pal(9,"YlOrRd"))) + 
    labs(fill='Adjusted Wallace Coefficient') + 
    theme(axis.title.x=element_blank(), 
     axis.title.y=element_blank(), 
     axis.text.x=element_text(angle = 315, hjust = 0)) 

link to new plot

+0

ああウェルは、データは右、まだ見てない目撃しました。私はより密接に名前を調べます... –

+0

@JoeHealeyは何をしているのかを理解し、そのように私の答えを編集しました –

+0

これは私の行動に感謝します。パッケージ自体。私はいくつかのデータセットでスクリプトを実行したいのですが、スクリプトのオブジェクトを敗北させるすべての名前をすべて手動で変更しなければならない場合は –

2

は、私はちょうどこれに小さなアップデートを投稿しようと思いました。私はGitHubの開発者と「バグ」について話しました。彼らはそれが理想的な動作ではないことに同意しました。私はこれが新しいCRANバージョンがリリースされるまでinstall_github()メソッドでRにインストールできる、プロプライエのdevブランチで修正されたと思います。

全スレッドはここにある: https://github.com/ropensci/plotly/issues/863#issuecomment-285761986

関連する問題