R Plotly:带有表格的子图

问题描述 投票:0回答:1

我不知道如何使用 R 和 Plotly 使表格子图正常工作。

以下说明了我的意思。我有两张图,一张是散点图,一张是表格。使用 subplot 函数,表格图的行为不符合预期。

我要么失去了散点图的交互性,要么有重叠的散点图/表格图。如果我遗漏了什么或者这是一个错误,请告诉我。

我使用的是plotly版本4.9.0

提前致谢!

library(plotly)

df <- data.frame(x = 1:10,
                 y = 1:10)

p1 <- 
  plot_ly(data = df,
          type = "scatter",
          mode = "line",
          x = ~x,
          y = ~y) %>%
  layout(xaxis = list(fixedrange=T),
         yaxis = list(fixedrange=T)) %>%
  config(displayModeBar = F)

p2 <-
  plot_ly(
    type = 'table',
    header = list(values = c("x", "y")),
    cells = list(values = rbind(df$x, df$y))
  )


subplot(p1, p2, nrows = 2) # overlapping plots

subplot(p2, p1, nrows = 2) # loses interactivity on p2

subplot(p1, p1, nrows = 2) # works as expected
r plotly
1个回答
4
投票

我刚刚阅读了 Plotly 的文档:

在 Plotly 中,没有本地方法可以将 Plotly Table 插入到 次要情节。

https://plot.ly/python/table-subplots/

但看来我们可以创建自己的布局。对于表格,我添加了“域”以将其定位在左侧:

p2 <-
  plot_ly(
    type = 'table',
    domain = list(x=c(0,0.5), y=c(0,1)),
    header = list(values = c("x", "y")),
    cells = list(values = rbind(df$x, df$y))
  )

然后为左侧的表格和右侧的散点图添加“布局”:

subplot(p1, p2, nrows = 2) %>%
  layout(xaxis = list(domain=c(0.5,1.0)),
         xaxis2 = list(domain=c(0,0.5)))

编辑(11/30/23):

感谢 @YBS 推荐

manipulateWidget
包中的一个函数,用于在绘图下方放置表格。这个套餐一般可以:

...用于以非常简单快捷的方式创建图形 允许用户修改数据或参数的接口 互动图表。

遇到这种情况,你可以尝试:

manipulateWidget::combineWidgets(list = list(p1, p2))

您还可以为多个交互式绘图的行和列的数量和大小指定参数。

© www.soinside.com 2019 - 2024. All rights reserved.