【问题标题】:Resize plotly R ggplotlyR ggplotly 调整大小
【发布时间】:2016-09-11 12:55:31
【问题描述】:

我在使用 plotly R 包时遇到了一些问题。我对 plotly 很陌生,但我喜欢我可以使用类似 ggplot 的语法,所以我正在努力让它发挥作用。

我创建了一个多面图,您可以将鼠标悬停在数据点上并查看有关该记录的详细信息。我对这个情节很满意,但我想调整它的大小,这样每个情节的 y 轴就不会那么短,因为我想调整整个情节的高度和宽度。

事实上,我不知道如何覆盖默认大小,我正在拔头发,因为我能找到的所有示例都使用 plot_ly() 而不是 ggplotly()。除非我需要,否则我宁愿不重建情节只是为了调整大小。

我目前运行的代码真的很简单:

plot <- ggplot(data = counts_country, aes(x = Year, y = Count, color = Region, text = paste("country:", Country))) +
  geom_point(size= 2, alpha = (1/2)) + 
  facet_wrap(~ Region, ncol = 1)

(gg_plot <- ggplotly(plot))

您可以在这里确切地看到我正在使用的内容: http://rpubs.com/dbouquin/180894

我尝试调整绘图以显示两行绘图,但仍然遇到问题,因为年份标签被砸在一起。调整大小似乎是我所需要的。

【问题讨论】:

  • 我不确定这是否是你要找的,但你可以添加到你的情节图中: %>% layout(autosize = F, width = 1000, height = 600) 并调整绘图的宽度和高度随心所欲。
  • 感谢您的建议,但这并不奏效。以这种方式调整布局只会改变绘图空间的大小,但标题也会拉伸。图表本身几乎保持不变
  • 是 scales = "free_y" 你在找什么?它是 facet_wrap 函数的参数,ggplotly() 将进行翻译。

标签: r plotly


【解决方案1】:

这里有一个解决方法。似乎在我猜你需要的 R-Markdown 文档中工作?它仍然保留ggplot2 语法,但使用plotly_build() 而不是ggplotly()

---
output: html_document
---

### Using ggplotly()
```{r, warning = F, message = F}
library(plotly)
library(dplyr)

gg <- mtcars %>% 
  ggplot(aes(wt, mpg, color = gear)) + 
  geom_point() + 
  facet_wrap(~hp)

ggplotly(gg)
```

### Using plotly_build()
```{r}
ggp_build <- plotly_build(gg)
ggp_build$layout$height = 800
ggp_build$layout$width = 600

ggp_build
```

看起来像这样:

【讨论】:

  • 在当前版本的 pltly for plotly_build 中,结果对象没有 $layout$width 或 $layout$height 属性
【解决方案2】:

就像plot_ly()ggplotly() 有一个height 和一个width 参数,请参阅?ggplotly

一般来说,最好始终设置height/width。如果你不这样做,并且你与其他人分享你的情节,那么大小可能会根据上下文而有所不同。

这对ggplotly() 尤其重要。在打印时,为了转换事物的大小,它必须假设为height/width。如果您不指定这些,它将使用您的 R 图形设备的大小,我们不能始终保证调整大小的行为与您从 R 图形设备获得的完全一致。

【讨论】:

    【解决方案3】:

    我建议您更新到最新版本的 plotly。

    要查看您使用的版本:packageVersion("plotly")

    然后您可以将widthheight 参数添加到您的ggplotly() 函数调用中。

    el <- as.data.frame(economics_long[,1:3])
    econp <- ggplot(el, aes(date, value, group=variable)) + 
      geom_line()+
      facet_grid(variable ~ ., scale = "free_y")+
      labs(title="US Economic time series")
    
    ggplotly(econp, height = 350, width=600)
    

    我要补充的一个额外建议是,如果您在 R Markdown 文档/R Notebook 中运行它,则图形本身可能也需要一些调整,因此您的 plotly(实际上是 htmlwidget)将不会与小窗口中的滚动条。这可以通过fig.widthfig.height 参数来完成:

    【讨论】:

      猜你喜欢
      • 2017-12-27
      • 2021-12-26
      • 2019-08-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-03-06
      • 1970-01-01
      相关资源
      最近更新 更多