我有一个闪亮的应用程序,用户在其中选择一组输入,例如x范围,y范围,缩放类型以及通过下拉列表选择数据集的特定子集.
这一切都是通过使用反应物来完成的.X和Y范围滑块输入对数据集选择的变化作出反应,因为必须再次找到最小值和最大值.这可能需要大约1-2秒,而闪亮的应用程序正在工作,用户在下拉列表中选择一个不同的选项.在这1-2秒期间,绘图将切换为使用旧的x和y范围绘制所选的新数据子集,然后在x和y范围滑块更改后快速切换到正确的绘图.
修复就是通过隔离其他所有内容来刷新按钮上的图.但是有没有办法让情节对变化保持反应,但是等到所有依赖事物都完成计算?
谢谢
这是情节:
output$plot1 <- rCharts::renderChart2({
if(!is.null(input$date_of_interest) &&
!is.null(input$xrange) &&
!is.null(input$yrange) &&
!is.null(data()) &&
isolate(valid_date_of_interest())) {
filtered_data<- dplyr::filter(isolate(data()), id==input$choice)
p <- tryCatch(plot_high_chart(
data,
first_date_of_interest = input$date_of_interest,
ylim = input$yrange,
xlim = input$xrange),
error = function(e) e,
warning = function(w) w)
if(!inherits(p, "error") && !inherits(p, "warning")) {
return(p)
}
}
return(rCharts::Highcharts$new())
})
Run Code Online (Sandbox Code Playgroud)
和x范围(y范围相似):
output$xrange <- renderUI({
if(!is.null(input$date_of_interest) &&
!is.null(input$choice) &&
!is.null(valid_date_of_interest()) &&
isolate(valid_date_of_interest())) {
temp_data <- dplyr::filter(isolate(data()), date == input$date_of_interest)
temp <- data.table::data.table(temp_data, key = "child.id")
the_days <- as.double(as.Date(temp$last.tradeable.dt) …
Run Code Online (Sandbox Code Playgroud) 我有以下代码:
library(dplyr)
set.seed(10)
test<-data.frame(x=runif(10,0,1),y=rep(c(1,2),5))
test <- test %>%
group_by(y) %>%
mutate(max_then=cummax(x))
test
Run Code Online (Sandbox Code Playgroud)
哪个输出
Source: local data frame [10 x 3]
Groups: y
x y max_then
1 0.50747820 1 0.5074782
2 0.30676851 2 0.3067685
3 0.42690767 1 0.5074782
4 0.69310208 2 0.6931021
5 0.08513597 1 0.5074782
6 0.22543662 2 0.6931021
7 0.27453052 1 0.5074782
8 0.27230507 2 0.6931021
9 0.61582931 1 0.6158293
10 0.42967153 2 0.6931021
Run Code Online (Sandbox Code Playgroud)
我想添加另一个变异列,它将添加从中计算max_then的rownumber/index.我想它会像下面这样.但我真的无法让它发挥作用.
test %>%
group_by(y) %>%
mutate(max_then-cummax(x),
max_index=which(.$x==max_then))
Run Code Online (Sandbox Code Playgroud)
预期产出是:
x y max_then max_index
1 0.50747820 1 …
Run Code Online (Sandbox Code Playgroud) 我正在使用R的伟大dygraphs包(https://rstudio.github.io/dygraphs/)
我现在的代码是:
james<-mtcars[c("mpg","drat")]
james$date<-seq(from=as.Date("2013-05-16"),to=as.Date("2013-06-16"),by="days")
x <- xts::xts(james$mpg, order.by = james$date)
p <- dygraphs::dygraph(x, main = "mpg over time", xlab = "Date", ylab = "mpg") %>%
dygraphs::dyRangeSelector() %>%
dyOptions(drawPoints = TRUE, pointSize = 2)
p
Run Code Online (Sandbox Code Playgroud)
我想缩放p中的点大小james$drat
,而不是将其固定为2.
我怎样才能做到这一点?
我正在为 R使用rbokeh 包。我在集成到一个闪亮的应用程序中取得了一些不错的结果。我现在想集成一个功能,其中dateRangeInput现在将选择图表的日期范围(它是时间序列数据)。
##necessary packages
install.packages("shiny")
install.packages("devtools")
install.packages("dplyr")
library(devtools)
devtools::install_github("ramnathv/htmlwidgets")
devtools::install_github("bokeh/rbokeh")
library(rbokeh)
library(dplyr)
library(shiny)
#example data set
james<-mtcars[c("mpg")]
james$date<-seq(from=as.Date("2013-05-16"),to=as.Date("2013-06-16"),by="days")
james$index<-1:4
#shiny app
shiny_example <- function(chart_data = james){
date_minmax <- range(chart_data$date)
shinyApp(
ui=fluidPage(
titlePanel("a plot"),
sidebarLayout(
sidebarPanel(
textInput("index","Enter the index from 1 to 16",value=1),
uiOutput("date_range")
),
mainPanel(
rbokeh::rbokehOutput("plot_cars")
)
)
),
server=function(input,output,session)
{
current_data <- reactive({
current_df <- subset(james,index==input$index)
return(current_df)
})
output$date_range <- renderUI({
plot_data <- current_data()
current_id_range <- range(plot_data$date)
return(
dateRangeInput("date_range",
"Date Range(X Axis", …
Run Code Online (Sandbox Code Playgroud) http://shiny.rstudio.com/reference/shiny/latest/sliderInput.html表示您可以使用 HTML 标签或字符向量修改滑块输入中播放按钮的外观。我希望我的播放按钮更大一点或者使用图像,但我无法完全让它工作,并且无法在 Google 上找到使用 playButton 或pauseButton 参数的人的示例。有小费吗?
添加以下内容作为参数:
playbutton=HTML("<img src=\"~/www/play.png\">")
Run Code Online (Sandbox Code Playgroud)
给出未使用的参数错误