繁体   English   中英

在可绘制的烛台图中缩放 Y 轴

[英]Scale Y-Achsis in plotly candlestick chart

我正在寻找一种方法来(自动)缩放烛台图表的 y 轴。 如果您看一下以下示例(来自https://plot.ly/r/candlestick-charts/

library(plotly)
library(quantmod)

getSymbols("AAPL",src='yahoo')

df <- data.frame(Date=index(AAPL),coredata(AAPL))
df <- tail(df, 365)

p <- df %>%
  plot_ly(x = ~Date, type="candlestick",
          open = ~AAPL.Open, close = ~AAPL.Close,
          high = ~AAPL.High, low = ~AAPL.Low) %>%
  add_lines(y = ~AAPL.Open, line = list(color = 'black', width = 0.75)) %>%
  layout(showlegend = FALSE)

y 轴具有 autoscal="normal",因此它从数据集中获取 min 和 max,但如果缩放,这些值保持不变。 拥有图形当前(缩放/查看)部分的最小值和最大值对我来说会更清楚不缩放

放大

到目前为止,我找不到实现此功能的方法,有没有人知道这样做的方法?

对我来说,另一个解决方案就是从这个例子中的图表中获得“正常”缩放:

library(plotly)
set.seed(100)
d <- diamonds[sample(nrow(diamonds), 1000), ]
plot_ly(d, x = ~carat, y = ~price, color = ~carat,
        size = ~carat, text = ~paste("Clarity: ", clarity))

在烛台图表中移动滑块也不会自动缩放 y 轴。 Plotly 团队可能还没有解决烛台图表的问题。 autorange = TRUE 两者都不起作用。

但是,如果有人在闪亮的应用程序中使用它,那么可行的解决方法是让日期滑块反应性地连接到 Plotly 图。 步骤如下:

  1. 创建一个选择开始和结束的日期滑块

用户界面

...
uiOutput("dateSlider")
...

服务器

  output$dateSlider <- renderUI({
     sliderInput(
      "dtSlider",
      "Select a date range:",
      min = min_date,  
      max = max_date,
      value = c(max_date - 30, max_date),  # in this case last 30 defines start and end
      timeFormat = "%Y-%m-%d",
      width = '80%'
    )
  output$dateSlider <- renderUI({
  1. 在 server.R 的 RenderPlotly 部分中,使用input$dtSlider[1]input$dtSlider[2]相应地计算一个从头到尾过滤数据的input$dtSlider[2] ,然后在 Plotly 代码中使用新的反应过滤 data.frame。

用户界面

plotlyOutput("candleChart")

服务器

output$candleChart <- renderPlotly({
...
df <- as.data.frame(dbFetch(res)) # querying DB to pull data with new input$dtSlider[1] as start and input$dtSlider[2] as end
...
fig <- df %>% plot_ly(x = ~timestamp, type="candlestick",
                          open = ~open, close = ~close,
                          high = ~high, low = ~low )

...

})

所以现在如果我们更改日期滑块,y 轴范围会自动更改,如下所示来自同一个 data.frame 对象: 在此处输入图片说明 在此处输入图片说明

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM