在绘制数千点时提高rCharts性能
我试图用rCharts包绘制数千个点,但我发现使用默认参数有点慢。我尝试将turboThresold参数设置为0,但没有帮助 以下是性能表:在绘制数千点时提高rCharts性能,r,highcharts,shiny,rcharts,R,Highcharts,Shiny,Rcharts,我试图用rCharts包绘制数千个点,但我发现使用默认参数有点慢。我尝试将turboThresold参数设置为0,但没有帮助 以下是性能表: 绘制100点:00.05秒 标绘1000点:00.54秒 绘制10000点:17.00秒 有人能提高这段代码的性能吗 library(shiny) library(rCharts) runApp( # User interface with 1 select box, 1 graph and 1 timer list(ui = pageWith
- 绘制100点:00.05秒
- 标绘1000点:00.54秒
- 绘制10000点:17.00秒
library(shiny)
library(rCharts)
runApp(
# User interface with 1 select box, 1 graph and 1 timer
list(ui = pageWithSidebar(
headerPanel(""),
sidebarPanel(
selectInput("value",NULL,choices=c(100,1000,10000), selected = 100)
),
mainPanel(
showOutput("plot", "highcharts"),
textOutput("timer")
)
),
# server side
server = function(input, output){
values<-reactiveValues()
values$timer <- NULL
# generating highcharts plot
output$plot <- renderChart2({
x <- 1:input$value
df <- data.frame(x, x^2)
names(df) <- c("x","xpower2")
values$timer <- Sys.time()
plot <- Highcharts$new()
plot$series(
data = toJSONArray2(df, json = F, names = F),
name = "xpower2",
type = "line"
)
plot$plotOptions(series=list(turboThreshold=0))
return(plot)
})
# calculating time
output$timer <- renderText({
input$value
isolate({
values$timer <- Sys.time() - values$timer
return(paste("Time elapsed :", round(values$timer,3) , "seconds"))
})
})
}
)
)
库(闪亮)
图书馆(艺术)
runApp(
#带有1个选择框、1个图形和1个计时器的用户界面
列表(ui=pageWithSidebar(
头盘(“”),
侧边栏(
选择输入(“值”,空,选择=c(100100010000),选择=100)
),
主面板(
显示输出(“绘图”、“高图”),
文本输出(“计时器”)
)
),
#服务器端
服务器=功能(输入、输出){
值通常,我建议使用任何浏览器图形包向浏览器发送不超过3000个点。选项是无止境的,但取决于数据。除此之外,我无法使用rCharts
加快速度,但使用ggvis
就可以了
library(shiny);library(ggvis)
runApp(
list(ui = fluidPage(
titlePanel('ggvis speed example'),
sidebarLayout(
sidebarPanel(
selectInput('points','Points To Plot',
choices=c(100,1000,10000,100000), selected = 1000)
),
mainPanel(
ggvisOutput('ggvis')
)
)),
server = function(input, output){
reactive({
1:input$points %>%
data.frame('x'=.,'y'=.^2) %>%
ggvis(~x, ~y) %>%
layer_points() %>%
add_axis("y", title_offset = 70) %>%
add_tooltip(function(df) HTML(paste0('x: ',df$x,'<br>y: ',df$y)))
}) %>% bind_shiny('ggvis')
}
)
)
库(闪亮);库(ggvis)
runApp(
列表(ui=fluidPage)(
titlePanel(“ggvis速度示例”),
侧边栏布局(
侧边栏(
选择输入('points','points To Plot',
选项=c(100100001000000),选中=1000)
),
主面板(
ggvis输出(“ggvis”)
)
)),
服务器=功能(输入、输出){
反应性({
1:输入$points%>%
数据帧('x'=,'y'=.^2)%>%
ggvis(~x,~y)%>%
图层_点()%>%
添加轴(“y”,标题偏移=70)%>%
添加工具提示(函数(df)HTML(粘贴0('x:',df$x',
y:',df$y)))
})%%>%bind_('ggvis')
}
)
)
这些命令也没有帮助:plot$plotOptions(series=list(animation=FALSE,enableMouseTracking=FALSE))尝试禁用阴影/动画/markersHi Sebastian。遗憾的是没有任何改进。您是否尝试使用原生Highcharts js而不是rCharts?然后比较结果?遗憾的是,我没有用我的R Shining应用程序在原生highchart中创建图表。但感谢您的评论,我找到了rHighcharts包,它似乎有更好的p性能,时间除以5。谢谢:)。如果你有任何关于R中原生highchart的例子,那就太好了。由于某些原因,我不能使用“ggvis”包装。我想我必须找到另一种方式来显示我的系列。我正在考虑将我的大系列样品分成小系列,选择正确的方法使其具有相同的外观。热图?我确信有一些更清晰的方式来显示许多点,这取决于目的。在我的情况下,我不是在处理时间序列。如果可以,也许可以尝试一下dygraphs