我想知道如何使用%而不是px设置rChart的宽度。我在源代码中注意到它默认为像素。我试图在一个闪亮的应用程序中使用它,并用图表修复似乎是一个问题,因为他们不会与其余的用户界面进行扩展。有办法解决这个问题吗?
答案 0 :(得分:2)
这应该被视为黑客攻击,因为rCharts
或大多数库都没有内置响应行为。但是,一个更改是使用此行为定义您自己的renderChart函数。如果你在服务器中定义一些闪亮的东西,这样的东西可能会起作用。
renderChart_pct <- function(expr, env = parent.frame(), quoted = FALSE) {
func <- shiny::exprToFunction(expr, env, quoted)
function() {
rChart_ <- func()
cht_style <- sprintf("<style>.rChart {width: %s; height: %s} </style>",
#### change these here to desired %
"100%", "100%")
cht <- paste(capture.output(rChart_$print()), collapse = '\n')
HTML(paste(c(cht_style, cht), collapse = '\n'))
}
}
然后使用renderChart_pct
代替renderChart2
。您可能会注意到结果不会真正响应。总而言之,这里将是dPlot
的示例。
library(shiny)
library(rCharts)
renderChart_pct <- function(expr, env = parent.frame(), quoted = FALSE) {
func <- shiny::exprToFunction(expr, env, quoted)
function() {
rChart_ <- func()
cht_style <- sprintf("<style>.rChart {width: %s; height: %s} </style>",
"100%", "100%")
cht <- paste(capture.output(rChart_$print()), collapse = '\n')
HTML(paste(c(cht_style, cht), collapse = '\n'))
}
}
ui = shinyUI(fluidPage(
fluidRow(
column(4,
h1("Filler Header")
)
,column(8,
div (
showOutput("myChart", "dimple")
)
)
)
))
server = function(input,output){
output$myChart <- renderChart_pct({
d = dPlot(
x~x
, data = data.frame(x=1:10)
, type = "line"
, height = 500
, width = NULL
)
})
}
runApp( list(ui=ui,server=server))