用于交互式 3D 直方图的 R Shiny HTMLWidget
R Shiny HTMLWidget for interactive 3D-histograms
我想在 R Shiny 应用程序中包含一个 3D 动态(即只需移动绘图即可改变其视角)直方图小部件。
很遗憾,直到现在我都没有找到。
到目前为止我的搜索结果:使用 threejs(例如 GitHub 上的 here on CRAN and there)可以使用许多不同的表示(散点图、曲面等)但没有 3D 直方图。 plot3D 和 plot3Drgl 没有任何 R Shiny 对应项。
除非已经存在某些东西,否则我的意图是从 vis.js, namely graph3d 的子库之一创建一个 HTMLWidget。
你对这个问题有什么看法?
此致,
奥利维尔
非常感谢,DSGym。我不知道这个图书馆。
在我的初始消息(现已修改)中,我实际上忘记提及动态功能,即只需用鼠标移动它就可以改变绘图视角的能力,就像 vis.js-graph3d 一样。
好像highcharter的情节做不到,还是我弄错了?
[编辑]:我刚刚检查了 Shiny:它是静态的。
plot3Drgl
可以做到。这是一个例子。
library(plot3Drgl)
library(shiny)
options(rgl.useNULL = TRUE)
ui <- fluidPage(
rglwidgetOutput("myWebGL")
)
server <- function(input, output) {
save <- options(rgl.inShiny = TRUE)
on.exit(options(save))
output$myWebGL <- renderRglwidget({
try(rgl.close())
V <- volcano[seq(1, nrow(volcano), by = 5),
seq(1, ncol(volcano), by = 5)] # lower resolution
hist3Drgl(z = V, col = "grey", border = "black", lighting = TRUE)
rglwidget()
})
}
shinyApp(ui, server)
我的包裹 graph3d
现在在 CRAN 上。
library(graph3d)
dat <- data.frame(x = c(1,1,2,2), y = c(1,2,1,2), z = c(1,2,3,4))
graph3d(dat, type = "bar", zMin = 0, tooltip = TRUE)
您可以自定义工具提示:
graph3d(dat, type = "bar", zMin = 0,
tooltip = JS(c("function(xyz){",
" var x = 'X: ' + xyz.x.toFixed(2);",
" var y = 'Y: ' + xyz.y.toFixed(2);",
" var z = 'Z: ' + xyz.z.toFixed(2);",
" return x + '<br/>' + y + '<br/>' + z;",
"}"))
)
我意识到我必须添加一个选项来控制轴标签的大小...
我想在 R Shiny 应用程序中包含一个 3D 动态(即只需移动绘图即可改变其视角)直方图小部件。
很遗憾,直到现在我都没有找到。
到目前为止我的搜索结果:使用 threejs(例如 GitHub 上的 here on CRAN and there)可以使用许多不同的表示(散点图、曲面等)但没有 3D 直方图。 plot3D 和 plot3Drgl 没有任何 R Shiny 对应项。
除非已经存在某些东西,否则我的意图是从 vis.js, namely graph3d 的子库之一创建一个 HTMLWidget。
你对这个问题有什么看法?
此致,
奥利维尔
非常感谢,DSGym。我不知道这个图书馆。
在我的初始消息(现已修改)中,我实际上忘记提及动态功能,即只需用鼠标移动它就可以改变绘图视角的能力,就像 vis.js-graph3d 一样。
好像highcharter的情节做不到,还是我弄错了?
[编辑]:我刚刚检查了 Shiny:它是静态的。
plot3Drgl
可以做到。这是一个例子。
library(plot3Drgl)
library(shiny)
options(rgl.useNULL = TRUE)
ui <- fluidPage(
rglwidgetOutput("myWebGL")
)
server <- function(input, output) {
save <- options(rgl.inShiny = TRUE)
on.exit(options(save))
output$myWebGL <- renderRglwidget({
try(rgl.close())
V <- volcano[seq(1, nrow(volcano), by = 5),
seq(1, ncol(volcano), by = 5)] # lower resolution
hist3Drgl(z = V, col = "grey", border = "black", lighting = TRUE)
rglwidget()
})
}
shinyApp(ui, server)
我的包裹 graph3d
现在在 CRAN 上。
library(graph3d)
dat <- data.frame(x = c(1,1,2,2), y = c(1,2,1,2), z = c(1,2,3,4))
graph3d(dat, type = "bar", zMin = 0, tooltip = TRUE)
您可以自定义工具提示:
graph3d(dat, type = "bar", zMin = 0,
tooltip = JS(c("function(xyz){",
" var x = 'X: ' + xyz.x.toFixed(2);",
" var y = 'Y: ' + xyz.y.toFixed(2);",
" var z = 'Z: ' + xyz.z.toFixed(2);",
" return x + '<br/>' + y + '<br/>' + z;",
"}"))
)
我意识到我必须添加一个选项来控制轴标签的大小...