在R中使用Plotly的子图(修复了错误)

Mur*_*rta 11 plot datagrid r plotly

如何在R中使用Plotly创建子图网格?

官方网站有这个很好的Python示例:

Python示例

在Python代码有权选择rows=2cols=2,但在R上的subplot功能刚刚参数nrows,没有ncols.

我在R中尝试了这个例子,但是nrows没有按预期接缝工作:

# Basic subplot
library(plotly)
p <- plot_ly(economics, x = date, y = uempmed)
subplot(p,p,p,p,
  margin = 0.05,
  nrows=2
) %>% layout(showlegend = FALSE)
Run Code Online (Sandbox Code Playgroud)

它们在一条线而不是在网格中.看结果:

在此输入图像描述

这是R suplots页面供参考.不幸的是,使用ggplotly对我来说不是一个选择,就像这样

UPDATE

这是一个错误.Plotly团队非常快,仅在3天内修复(点击此处查看)!Github版本已经更新.很好!

Fel*_*lix 10

这似乎是subplot()为两个图生成y轴域的方式中的真正错误.实际上,它们重叠,如果你执行它们很容易看到

p <- plot_ly(economics, x = date, y = uempmed)
q <- plot_ly(economics, x = date, y = unemploy)


subplot(p,q, nrows = 2)
Run Code Online (Sandbox Code Playgroud)

这将产生以下情节:

在此输入图像描述

如果仔细观察y轴,您会发现它们重叠.这暗示了问题的方式subplot()定义了子图的y轴的域.

如果我们手动更正y轴的域规范(遵循绘图文档),我们可以解决问题:

subplot(p,q, nrows = 2) %>% layout(yaxis = list(domain = c(0, 0.48)), 
                                   yaxis2 = list(domain = c(0.52, 1)))
Run Code Online (Sandbox Code Playgroud)

这会产生: 在此输入图像描述

现在,如果要重现类似于Python示例的4x4子图矩阵,您可能需要以类似的方式手动调整x轴域.

由于这是一个错误,我的解决方案只是一种解决方法,但我建议您plotlyGitHub上提出问题.