我在创建闪亮的交互式绘图方面遇到了一些问题。
这里有一些代码可以显示我想要的内容,但它使用的是ggplot2
,它不是交互式的。
library(shiny)
library(data.table)
library(ggplot2)
x <- 1:10000
dt <- data.frame(a = 1:100, b = sample(x,100,replace=T), c = sample(x,100,replace=T), d = sample(x,100,replace=T))
dt.molten <- melt(dt,id.vars="a")
ui <- fluidPage(
plotOutput("gplot")
)
server = function(input, output) {
output$gplot <- renderPlot({
ggplot(y.molten,aes(x = value)) +
geom_histogram(binwidth = 100000) +
facet_wrap( ~ variable,ncol = 1)
})
}
shinyApp(ui = ui, server = server)
在我的实际应用中,方面的数量会有所不同,因此我不能简单地使用highcharter
,ggvis
或plotly
在3个单独的地块中进行硬编码。
理想情况下,我希望它看起来像这样:
require(highcharter)
x <- stl(log(AirPassengers), "per")
hchart(x)
除了直方图而不是时间序列数据。
主要问题是我正在绘制的数据延伸超过-3,000,000到+3,000,000,高浓度大约为0.这使得很难看到边缘的条形,所以我希望用户是能够放大绘图的某些范围,而无需通过某些ui元素选择它。
我愿意使用R中的任何绘图方法,尽管我想远离rCharts
。
编辑:我确实发现使用plotly::ggplotly
几乎达到了我想要的效果,但它并不是很干净。我做了g <- ggplot(*plot code*)
然后ggplotly(g)
。工作得体,但我认为清理工作还需要相当多的工作。