我正在尝试使用Highstock JS将时间序列金融OHLC数据绘制为来自R的烛台。我正在使用rcharts包。然而,该情节需要花费大量时间来显示(对于10,000支蜡烛,大约需要5分钟。
我也尝试使用ggplot2构建蜡烛和交互性,使用了情节。虽然ggplot2可以非常快速地渲染绘图,但是当我使用plotly时,它会减慢速度。
我在图表中基本上需要工具提示和水平滚动条。
我添加了一个使用ggplot2创建的示例代码和使用scroll
创建的示例代码library(shiny)
shinyUI(fluidPage(
# Application title
titlePanel(NULL),
# Sidebar with a slider input for scrolling
sidebarLayout(
sidebarPanel(
sliderInput("integer", "Scroll parameter:",
min=51, max=2000, value=100)
),
mainPanel(
plotOutput("plot",
hover = hoverOpts(
id = "plot_hover")
)
)),
fluidRow(
column(width = 3,
verbatimTextOutput("hover_info")
)
)))
library(ggplot2)
library(shiny)
library(plotly)
shinyServer(function(input, output) {
set.seed(1)
s <- sample(seq(from = 1, to = 50, by = 1), size = 2000, replace = TRUE)
data <- data.frame(x = 1:length(s), y = s)
df <- reactive({
df <- data[(input$integer - 50):input$integer,] # selecting only 50 rows of data frame and generating the plot
return(df)
})
output$plot <- renderPlot({
temp <- df()
p <- ggplot(data = temp, mapping = aes(x=x,y=y))
p <- p+geom_line()
print(p)
# g <- ggplotly(p) # for conversion to plotly
# print(g)
})
output$hover_info <- renderPrint({
cat("input$plot_hover:\n")
str(input$plot_hover)
})
})
这个问题是每次我更改滚动参数时,都会重新创建绘图,因此处理时间很慢(大约.3秒)。当我用鼠标移动时,滚动也不平滑。
有什么方法可以在高分辨率下加载整个ggplot并有滚动条。
另外我需要一个工具提示,这就是为什么我无法加载图片的原因。
据我所知,对于交互性,所需的处理时间很长。但是有没有其他方法来渲染更快的图表。
我在8 GB RAM的MAC OS上运行。