[英]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 图。 步骤如下:
用户界面
...
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({
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 )
...
})
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.