2016-12-19 1 views
11

최근에 R 및 Rstudio를 업데이트했으며 필자가 작성한 스크립트로드가 손상되었습니다.plot_ly 순서 변경 행렬을 방지합니다.

내가 특히 문제를 일으키는 한 가지는 아래 스크립트입니다. 이전에는 히트 맵 을 정확히으로 출력 했었습니다. 매트릭스를 만들기 위해 내가 지정한 값의 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의 현재 버전에서이 문제의

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") 

, 내가 대신 ggplot2 사용하는 것이 좋습니다 것입니다 : 여기에 명확하게 보여주는 MWE입니다. 다음과 같이 사실, 당신은 더 적은 라인에 원래의 음모에 도달 할 수 있습니다

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에 설치 될 수있는 devly 브랜치에서 수정되었다고 생각한다.

전체 스레드는 여기에 있습니다 : https://github.com/ropensci/plotly/issues/863#issuecomment-285761986