【发布时间】:2018-06-23 22:55:08
【问题描述】:
我正在使用 flexdashboard 在 Rmarkdown 文件中制作闪亮的应用程序,但在使用来自反应函数的数据制作 ggplot 时遇到问题。
这些是步骤/元素:
- 从要求日期的单选按钮获取输入,并打印答案 (检查他是否反应良好)-> 工作
- 读取相关 csv 文件的反应函数(基于日期) 并打印它的内容(检查)-> 作品
- 用 csv 文件的内容制作的 ggplot -> 不起作用
当我使用 renderPlot() 用非反应性数据集(我加载了一个)制作 ggplot 时,我得到了正确的结果,所以 ggplot-part 很好。
这与反应式 en renderPlot 组合有关,但我似乎无法弄清楚。尽管这是一个“简单”的概念,但尽管看了几部电影并阅读了几本指南,但我仍然无法掌握工作流程。
这是我当前的代码:
---
title: "Tests plot"
output:
flexdashboard::flex_dashboard:
orientation: columns
vertical_layout: fill
runtime: shiny
---
```{r setup, include=FALSE}
library(flexdashboard)
library(shiny)
library(ggplot2)
```
Input {.sidebar}
======================================
```{r}
radioButtons("countdate",h3("Datum"), c("01-12-2017"="T1","06-12-2017"="T2","24-12-2017"="T3"))
```
Data
======================================
Column
-----------------------------------------------------------------------
### Date
```{r}
reactive({ #OK
input$countdate
})
```
Column
-----------------------------------------------------------------------
### Data
```{r}
fake2 <- reactive({read.csv2(paste(input$countdate, ".csv", sep = ""))})
fake2 #OK
```
Column
-----------------------------------------------------------------------
### Plot
```{r}
ggplot1 <- reactive({
renderPlot({ggplot(fake2, aes(Rij, Plant)) +
xlim(0,40) +
ylim(0,50) +
coord_equal() +
geom_raster(aes(fill=Wtot)) +
scale_fill_gradient(low="yellow", high="red")
})
})
ggplot1
```
我在剧情部分也试过这个:
renderPlot({
ggplot(fake2, aes(Rij, Plant)) +
xlim(0,40) +
ylim(0,50) +
coord_equal() +
geom_raster(aes(fill=Wtot)) +
scale_fill_gradient(low="yellow", high="red")
})
我的数据如下所示:
Vplaat;Rij;Plant;Mtot;Wtot
A;4;10;2;20
B;4;46;5;35
C;9;5;1;14
D;9;30;0;42
E;11;17;8;85
...
【问题讨论】:
-
反应是函数。试试
fake2()有用吗? -
是的,就是这样。另一个人已经回答了这个问题,但是因为我还需要删除 reactive() (他没有告诉我,可能忘记在代码中删除它)它不起作用。问题已解决,谢谢你们!