我正在尝试在一个非常简单的应用程序中实现一个滑块。主要的想法是用滑块改变值,并在图表2中看到可视化的结果。下面你可以看到我的代码
---
title: "Test App"
output:
flexdashboard::flex_dashboard:
orientation: columns
vertical_layout: fill
runtime: shiny
---
```{r setup, include=FALSE}
library(flexdashboard)
library(shiny)
library(tidyverse)
# Data Set 1
df<-data.frame( cyl=c("4","6","8"),
Multiplier=c(2,4,6))
# Data Set 2
df1 <- mtcars
df1$cyl <- as.factor(df1$cyl)
Column {.sidebar}
selectInput("clusterNum",
label = h4("Charts"),
choices = list("Chart1" = "Chart1", "Chart2" = "Chart2"),
selected = "Chart1"
)
# Sidebar to demonstrate various slider options ----
sidebarPanel(
# Input: Simple integer interval ----
sliderInput("integer", "Integer:",
min = 0, max = 8,
value = 1),)
Column {data-width=650}
Chart
# First chart
Chart1 <- ggplot(df1, aes(x = wt, y = mpg)) +
geom_point()
# Second chart
Chart2_df1<-df1%>%
dplyr::left_join(df,df1,by = c("cyl"="cyl"))
Chart2_df1<-Chart2_df1%>%
dplyr::mutate(mpg_new=(mpg*Multiplier))
Chart2 <- ggplot(Chart2_df1, aes(x = wt, y = mpg_new)) + geom_point()
# Visualization of the selected chart
renderPlot({
switch(input$clusterNum,
"Chart1" = Chart1,
"Chart2" = Chart2
)
})
使用滑块中的值,我想更改**df**中“乘数”列的值。更改后,这些值是第二个图表公式的一部分,用于乘以**df1**中“mpg”列的值。完成此操作后,下一步是在图表2中显示结果。
所以谁能帮我实现这个类似于下图?
![](https://i.stack.imgur.com/sjbZs.jpg)
1条答案
按热度按时间watbbzwu1#
为了使绘图对输入具有React性,我们需要它在
reactive
内或在renderPlot
内处理(本质上是React性的)。一种方法是将
Chart2
设为无功图,然后用Chart2()
“调用”它(获取无功数据/图的方法):注意,
Chart1
是未修改的,因为它不是一个React成分,我们继续将它称为Chart1
(没有()
),就像我们对待任何其他正则R对象一样。但是,因为Chart2
是一个有光泽的React对象,我们需要()
来获得更新后的值。如果您除了绘制数据之外还要对此数据进行处理,则可以选择将更改后的数据作为一个无功分量,然后将其用于其他分量。
并且任何其它组件(例如,表格、附加绘图)也可使用X1 M9 N1 X来查看所联接/更新的数据。