Flexdashboard / plotly交互导致奇怪的滚动条行为

时间:2017-09-29 18:43:01

标签: r storyboard plotly flexdashboard

我有一个奇怪且令人沮丧的问题。当我在故事板(来自flexdashboard包)中构建情节图时,我的传奇中出现了一个非常烦人且完全不必要的滚动条。当有人试图打开或关闭其中一个点时,滚动条会抽搐,实际上无法点击该内容。仅当在页面加载期间没有立即显示带有绘图图形的选项卡时,此滚动条才会出现 - 即,如果页面加载了选定的其他选项卡。

我可以在故事板之外创建相同的图形,在RStudio中没有任何问题,或者将其保存为htmlwidget并将其加载到Chrome中。但是当我加载我的故事板时,无论是在RStudio还是在Chrome中,我都会看到这个恼人的滚动条。滚动条存在,无论它是垂直还是水平的图例。

ggplotly对象没有这个问题。

这是不必要滚动条的示例。 ggplotly图表没问题,图中的图表有滚动条。

---
title: "Untitled"
output: 
  flexdashboard::flex_dashboard:
    storyboard: true
---

```{r setup, include=FALSE}
library(flexdashboard)
```

### ggplot

```{r}

library(plotly)

carggplot <- ggplot(mtcars, aes(hp, mpg, fill = as.factor(carb))) +
    geom_point() +
    theme_bw()

ggplotly(carggplot)
```


### plotly

```{r}
carsplot <- plot_ly(
    data = mtcars,
    x = ~hp,
    y = ~mpg,
    color = ~as.factor(carb),
    type = "scatter",
    mode = "markers"
    )

carsplot
```

我一直找不到关于这个问题的任何文档,虽然我发现某个人使用python接口发布了similar problem

我正在寻找一种完全关闭滚动条的方法(同时保留图例),或者滚动条的一些解释。

flexdashboard为0.5,情节为4.7.1,R为64位3.4.1,Windows 7。

2 个答案:

答案 0 :(得分:1)

有很多活动部件正在回答你的问题。我不会详细介绍每一个,但只是简单地触及它们。

背景

  1. 当图例的长度变长时,plotly.js图表的行为与设计相符,它会自动插入滚动条。

  2. ggplotly图表不会发生这种情况,因为所有视觉样式都来自ggplot对象。

  3. flexdashboard是这种情况的罪魁祸首,因为它如何动态拟合可用空间并告知plotly.js如何渲染。值得注意的是,这在源html中显示为 SVG

  4. 然后解决方案是操纵 DOM 以隐藏/删除/更改有问题的元素。

  5. 潜在解决方案

    我在下面提供的解决方案有点像黑客。更永久的解决方案可能是在RStudio向好人提出问题,看看是否可以对包裹进行任何更改,从而解决您的问题。

    如果您将runtime: shiny添加到 YAML 标题中,则可以使用Dean Attali之前的优秀shinyjs包。虽然我不是这方面的专家,但我在 MRE 中添加了一些行,用于删除{{1>} {em> SVG 中的<rect>元素}}。重要的是要注意,您可能需要更改我提供的 javascript 更具体,而不是删除您可能希望保留的元素。

    更新为MRE

    以下是class=scrollbar代码,其中包含我已做出更改的评论。

    Rmd

    N.B。正如我发布的那样,我的结果不可靠,并会进一步挖掘。

答案 1 :(得分:0)

老问题,但如果其他人有同样的问题,我想在那里找到我的解决方案......

我有同样的问题,我用这种方法解决了它:

ggplotly(carggplot, height = 500)

我的传奇中有一个迷你滚动条,在调用ggplotly()时调整高度,允许我调整到使一切正常工作所需的正确高度。