我有一个闪亮的应用程序,有两个同步的dygraphs。 上面一个有一个Y轴,另一个有两个Y轴。
问题是第二个Y轴占用div中的空间。 所以日期不再低于彼此。 我试图修改上面的dygraph的长度,但是如果屏幕的大小发生变化(因为应用程序是响应的),它就不起作用了。 我尝试使用dyCSS但没有结果。
有没有办法在上面的dygraph上没有添加第二个Y轴,以保持右边的合适空间? 或者删除底部图形的第二个Y轴的div?
感谢您的帮助。
问题图片:
以下是可重现的例子:
ui.R
library(dygraphs)
shinyUI(fluidPage(
dygraphOutput("dygraph1"),
dygraphOutput("dygraph2")
)
)
server.R
library(dygraphs)
library(datasets)
shinyServer(function(input, output) {
lungDeaths <- cbind(mdeaths, fdeaths)
output$dygraph1 <- renderDygraph({
dygraph(ldeaths, main = "Male", group = "lung-deaths")
})
output$dygraph2 <- renderDygraph({
dygraph(lungDeaths, main = "All", group = "lung-deaths") %>%
dySeries("fdeaths", axis = "y2")
})
})
答案 0 :(得分:0)
这不是最优雅的解决方案,但您可以使用jQuery隐藏第二个轴。
library(dygraphs)
ui <- shinyUI(fluidPage(
tags$head(
tags$script(
HTML("
Shiny.addCustomMessageHandler ('hideAxis',function (val) {
hideAxis();
});
function hideAxis(){
$('#dygraph1').find('.dygraph-axis-label-y2').hide();
}
")
)
),
dygraphOutput("dygraph1"),
dygraphOutput("dygraph2")
)
)
library(dygraphs)
library(datasets)
server <- shinyServer(function(input, output, session) {
lungDeaths <- cbind(mdeaths, fdeaths)
ldeaths2 <- cbind(ldeaths, ldeaths)
colnames(ldeaths2) <- c("ldeaths","ldeaths2")
output$dygraph1 <- renderDygraph({
reactiveTimer(50,{session$sendCustomMessage (type="hideAxis", 1)})
dygraph(ldeaths2, main = "Male", group = "lung-deaths") %>%
dySeries("ldeaths2", axis = "y2") %>%
dyCallbacks(zoomCallback = "function(){$('#dygraph1').find('.dygraph-axis-label-y2').hide();}")
})
output$dygraph2 <- renderDygraph({
dygraph(lungDeaths, main = "All", group = "lung-deaths") %>%
dySeries("fdeaths", axis = "y2")
})
})
shinyApp(ui=ui, server=server)
修改
因为danvk吮吸了'rightGap?选项可用于创建neatersolution,例如:
library(dygraphs)
ui <- shinyUI(fluidPage(
dygraphOutput("dygraph1"),
dygraphOutput("dygraph2")
)
)
library(dygraphs)
library(datasets)
server <- shinyServer(function(input, output, session) {
lungDeaths <- cbind(mdeaths, fdeaths)
output$dygraph1 <- renderDygraph({
dygraph(ldeaths, main = "Male", group = "lung-deaths") %>%
dyOptions(axisLabelWidth=80, rightGap = 90)
})
output$dygraph2 <- renderDygraph({
dygraph(lungDeaths, main = "All", group = "lung-deaths") %>%
dySeries("fdeaths", axis = "y2") %>%
dyOptions(axisLabelWidth=80)
})
})
shinyApp(ui=ui, server=server)
此处axislabelWidth
和rightGap
选项设置为对齐图表。