Я хотел бы включить виджет гистограммы 3D динамичный (т.е. можно изменить его перспективу, просто перемещая график) в приложение R Shiny.
К сожалению пока не нашел.
Пока что результаты моих поисков: с помощью threejs (например, здесь в CRAN и там в GitHub) можно использовать множество различных представлений (диаграммы рассеяния, поверхности и т. д.), но нет гистограммы 3D. plot3D и plot3Drgl не имеют аналога R Shiny.
Если что-то еще не существует, я намерен создать HTMLWidget из одной из подбиблиотек vis.js, а именно граф3d.
Каковы ваши взгляды на этот вопрос?
С наилучшими пожеланиями,
Оливье





Большое спасибо, DSGym. Я не знал эту библиотеку.
В своем первоначальном сообщении (теперь исправленном) я действительно забыл упомянуть динамическую функцию, то есть возможность изменить перспективу графика, просто перемещая его мышью, как с vis.js-graph3d.
Кажется сюжеты из хайчартера так не могут, или я ошибаюсь?
[РЕДАКТИРОВАТЬ]: Я только что проверил с 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;",
"}"))
)
Я понимаю, что мне нужно добавить опцию для управления размером меток осей...
Вау, какой приятный сюрприз, Стефан! Спасибо за это! Я смогу посмотреть и протестировать ваш пакет с данными, о которых я изначально думал, только в конце следующей недели. Затем я дам вам знать мой отзыв.
Еще раз большое спасибо, @Stéphane Laurent, за вашу работу, и приносим извинения за то, что ответили вам намного позже, чем было объявлено. Наконец-то я протестировал ваш пакет и вот мой самый первый отзыв:
1. Использование качественных данных по осям (скажем, x и y - в моем случае страны и направления бизнеса) пока не кажется простым/поддерживаемым. 2. У меня не получилось присвоить цвета качественному фактору (скажем, x - страны) с опцией dataColor.fill. 3. Я предполагаю, что вы не реализовали предупреждения/сообщения об ошибках?
Что касается пункта № 1 выше, я думаю, что передача вектора R в JavaScript и использование функции {x|y|z}ValueLabel должны работать. Но я согласен, что было бы неплохо установить размер меток осей ^^
Большое спасибо, Стефан. Это прекрасно работает. Тем не менее, я думаю, что альтернатива с vis.js-graph3d была бы полезной (например, для всплывающих подсказок и т. д.).