调整 plotly R ggplotly 的大小

18

我在使用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 我尝试调整图表以显示两行图表,但仍然有问题,因为年份标签被挤在一起。调整大小似乎是我所需要的。

我不确定这是否是您要寻找的内容,但您可以在plotly图中添加以下内容:%>% layout(autosize = F, width = 1000, height = 600),并根据需要调整图的宽度和高度。 - MLavoie
谢谢您的建议,但那并不起作用。以那种方式调整布局只会改变绘图空间的大小,但标题也会被拉伸。图形本身几乎保持不变。 - Daina
你是在寻找 scales = "free_y" 吗?这是传递给 facet_wrap 函数的参数,而 ggplotly() 将对其进行翻译。 - Vance Lopez
3个回答

10

这里有一个解决方法。看起来在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
```

看起来像这样:

输入图像描述

输入图像描述


1
在当前版本的pltly中,对于plotly_build生成的对象,其结果没有$layout$width或$layout$height属性。 - Parsa

8
plot_ly()一样,ggplotly()也有heightwidth参数,请参见?ggplotly
通常最好始终设置height/width。如果您没有设置,而您与其他人共享您的图表,则根据上下文情况大小可能会有所不同。
这对于ggplotly()尤其重要。在打印时,为了转换大小,它必须假定一个height/width。如果您没有指定这些内容,它将使用您的R图形设备的大小,我们不能保证调整大小的行为与您从R图形设备获得的行为完全一致。

7
我建议您升级到最新版本的plotly。
要查看您目前使用的版本,请输入:packageVersion("plotly") 接下来,您可以在ggplotly()函数调用中添加widthheight参数。
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 参数来完成:

enter image description here


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接