首页 > 解决方案 > 带有 Flexdashboard 的 Plotly 和 DT 表

问题描述

我在flexdashboard. 这是一个代表:

---
title: "FlexDashboard"
output: 
flexdashboard::flex_dashboard:
orientation: column
---
              
```{r setup, include=FALSE}
library("flexdashboard")
library("dplyr")
library("ggplot2")
library("plotly")
library("DT")
```


```{r}
library(datasets)
data(iris)
iris <- iris

```


Column {data-width=500}
-----------------------------------------------------------------------

### **Chart**
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labor et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur.
```{r, fig.height=3, fig.width=8}
ggplotly(ggplot(data = iris, aes(x = Sepal.Length, y = Petal.Width)) + geom_point())

```



### Chart B

```{r}



```




Column {data-width=500}
-----------------------------------------------------------------------

### Chart B

```{r}
iris %>% 
  datatable(
          rownames = FALSE,
          class = 'cell-border stripe',
          extensions = c('Buttons', 'KeyTable'), 
          options = list(dom = 't',
                         autoWidth = TRUE,
                         buttons = c('copy', 'excel',  'print'),
                         keys = TRUE)
          )

```

有两个问题:

  1. 情节图被切断。我试图玩,fig.widthfig.height无济于事。
  2. DT表不显示按钮和标题行未对齐

在此处输入图像描述

标签: rdtr-plotlyflexdashboard

解决方案


绘图被截断的问题是您将文本与图表混合在一个“容器”中。每个容器只能有“一个”内容。

如果您想在仪表板上添加文本,可以将其放在页面顶部(选项 1)的列顶部(选项 2),或者您可以将其作为文本注释添加到图表下方(选项 3)。我下面的代码显示了这三个选项的示例。当然,选项 4 是为文本和图表设置单独的容器。

关于您的第二个数据表问题。对齐问题的出现是因为autoWidth=TRUE. 有了这些信息,我在互联网上进行了搜索。不幸的是,除了设置autoWidth=FALSE. 另请参见此处

顺便说一句:我建议将问题一分为二,即问两个不同的问题。虽然这两个问题都与 flexdahsboard 有关,但问题却大不相同。分别关注每个问题将使回答更容易,让其他人更容易找到问题和可能的答案,允许制作最少的示例,...

    ---
    title: "FlexDashboard"
    output: 
      flexdashboard::flex_dashboard:
        orientation: column
    ---
                  
    ```{r setup, include=FALSE}
    library(flexdashboard)
    library(dplyr)
    library(ggplot2)
    library(plotly)
    library(DT)
    ```
    
    **Option 1** Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labor et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur.
    
    Column {data-width=500}
    -----------------------------------------------------------------------
    
    **Option 2** Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labor et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur.
    
    ### **Chart**
    
    ```{r}
    ggplotly(ggplot(data = iris, aes(x = Sepal.Length, y = Petal.Width)) + geom_point())
    ```
    
    > **Option 3** Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labor et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur.
    
    ### Chart B
    
    ```{r}
    
    
    
    ```
    
    Column
    -----------------------------------------------------------------------
    
    ### Chart B
    
    ```{r}
    iris %>% 
      datatable(
              rownames = FALSE,
              class = 'cell-border stripe',
              extensions = c('Buttons', 'KeyTable'), 
              options = list(dom = 't',
                             autoWidth = TRUE,
                             columnDefs = list(
                               list(className = 'dt-center',
                                    targets = 0:4)),
                             buttons = c('copy', 'excel',  'print'),
                             keys = TRUE
                             )
              )

在此处输入图像描述


推荐阅读