我正在寻找一种方法来(自动)缩放烛台图表的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”,因此从数据集中获取最小值和最大值,但如果缩放,则这些值保持不变。我可以更清楚地获得图表当前(缩放/查看)部分的最小值和最大值
到目前为止,我找不到实现此功能的方法,有没有人知道这样做的方法?
对我来说,另一个解决方案就是从这个例子中的图表中获得“正常”缩放:
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))
答案 0 :(得分:0)
在烛台图表内移动滑块也不会自动调整 y 轴。 Plotly 团队可能还没有解决烛台图表的问题。 autorange = TRUE 两者都不起作用。
但是,如果有人在闪亮的应用程序中使用它,那么可行的解决方法是让日期滑块与 Plotly 图形反应连接。步骤如下:
ui.R
...
uiOutput("dateSlider")
...
server.R
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]
从头到尾过滤数据,计算一个 data.frame,然后在 Plotly 代码中使用新的反应过滤的 data.frame .ui.R
plotlyOutput("candleChart")
server.R
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 )
...
})