使用plotly和geom_tile

时间:2016-04-05 22:03:47

标签: r ggplot2 heatmap plotly

我正在尝试使用ggplot2的{​​{1}}打印热图,并使用包geom_tile显示它,但我得到了一些意想不到的行为。

在plotly的网站https://plot.ly/ggplot2/geom_tile/

中有一个可重现的例子

为了方便起见,我将代码粘贴到此处:

plotly

根据该网站,我应该得到这样的东西:

The supposed output according to the website

但我得到的结果是下一个:

The result I get with plotly

有趣的是,如果我用library(plotly) library(reshape2) p <- volcano %>% melt() %>% ggplot(aes(Var1, Var2, fill = value)) + geom_tile() ggplotly(p) 打印ggplot对象p,我会得到我应该得到的结果:

The result I get with ggplot

这让我觉得问题是print(p)而不是plotly

我使用ggplotggplot运行其他示例中的代码,这一切都运行良好,问题似乎与plotly有关。

我的geom_tile是:

SessionInfo()

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

  • ggplot2:2.1.0
  • plotly:3.4.1

我还用Mac测试了这段代码并获得了相同的意外结果。

1 个答案:

答案 0 :(得分:2)

所以,我找到了三种可能的解决方案:

  1. 正如Laterow所说,降级到2.0.16版本有效。
  2. 来自plotly的人告诉我,使用devtools::install_github('ropensci/plotly')安装开发版本3.4.13应该可以修复它。我试过了它确实有效。
  3. 转置原始数据并更改aes geom_tile中变量的顺序也有效。
  4. 第三种解决方案的代码是:

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