2016-04-05 13 views
1

Ich versuche, eine Heatmap mit ggplot2 's geom_tile zu drucken und es mit dem Paket plotly anzuzeigen, aber ich bekomme etwas unerwartetes Verhalten.Unerwartete Ausgabe mit plotly und geom_tile

Es ist ein reproduzierbares Beispiel in plotly Webseite https://plot.ly/ggplot2/geom_tile/

es einfacher zu machen, habe ich den Code hier einfügen:

library(plotly) 
library(reshape2) 

p <- volcano %>% 
    melt() %>% 
    ggplot(aes(Var1, Var2, fill = value)) + geom_tile() 

ggplotly(p) 

Laut der Website, soll ich so etwas bekommen:

The supposed output according to the website

Aber das Ergebnis, das ich bekommen, ist der nächste:

The result I get with plotly

Das Komische ist, dass, wenn ich drucken Sie das ggplot Objekt p mit print(p) ich das Ergebnis bekomme ich sollte bekommen:

The result I get with ggplot

, die mich denken lässt, dass das Problem ist plotly und nicht ggplot.

Ich habe den Code von anderen Beispielen mit ggplot und plotly ausgeführt und es funktioniert alles einwandfrei, scheint das Problem mit geom_tile zu sein.

Mein SessionInfo() ist:

R version 3.2.4 Revised (2016-03-16 r70336) 
Platform: x86_64-pc-linux-gnu (64-bit) 
Running under: Ubuntu 15.10 

Und die Versionen von ggplot einer plotly sind:

  • ggplot2: 2.1.0
  • plotly: 3.4.1

I testete diesen Code auch mit einem Mac und bekam das gleiche unerwartete Ergebnis Sult.

+0

Ich versuche es mit plotly 3.4.1 (funktionierte nicht) und mit einer älteren Version von plotly (2.Something; es funktioniert) . Auf den ersten Blick scheint es also ein Fehler zu sein. Wenn jemand anderes dies bestätigen könnte, wäre das großartig. – Laterow

+0

Ja, ich habe Version 2.0.16 installiert und es funktioniert gut. Ich denke, ich werde dieses Problem in plotlys Website oder so veröffentlichen. –

Antwort

0

Also, ich drei mögliche Lösungen für diese gefunden:

  1. Wie Laterow sagte, auf die 2.0.16 Version Werke Herabstufung.
  2. Die Leute von plotly sagte mir, dass die Installation der Entwicklungsversion 3.4.13 mit devtools::install_github('ropensci/plotly') sollte es beheben. Ich habe es versucht und es funktioniert.
  3. Das Transponieren der Originaldaten und Ändern der Reihenfolge der Variablen in aes in geom_tile funktioniert auch.

Der Code für die dritte Lösung wäre:

p <- t(volcano) %>% 
melt() %>% 
ggplot(aes(x=Var2, y=Var1)) + geom_tile(aes(fill=value)) 
ggplotly(p)