sta*_*oob 8 html interactive r data-visualization plotly
使用 R 中的“plotly”库 - 我生成了一些随机数据并进行了一些交互式数据可视化:
library(plotly)
library(ggplot2)
library(dplyr)
library(hrbrthemes)
#subplot 1
data1 <- data.frame(
day = as.Date("2017-06-14") - 0:364,
value = runif(365) - seq(-140, 224)^2 / 10000
)
p1 <- ggplot(data1, aes(x=day, y=value)) +
geom_line( color="#69b3a2") +
xlab("") +
theme_ipsum() +
theme(axis.text.x=element_text(angle=60, hjust=1))
fig1 <- ggplotly(p1)
scatter_1 = data.frame(x = rnorm(100,100,100), y = rnorm(100,100,100))
fig2 <- plot_ly(data = scatter_1, x = ~x, y = ~y)
#subplot 2
data2 <- data.frame(
day = as.Date("2017-06-14") - 0:364,
value = runif(365) - seq(-140, 224)^2 / 10000
)
p2 <- ggplot(data2, aes(x=day, y=value)) +
geom_line( color="#69b3a2") +
xlab("") +
theme_ipsum() +
theme(axis.text.x=element_text(angle=60, hjust=1))
fig3 <- ggplotly(p2)
scatter_2 = data.frame(x = rnorm(100,100,100), y = rnorm(100,100,100))
fig4 <- plot_ly(data = scatter_1, x = ~x, y = ~y)
#subplot 3
data3 <- data.frame(
day = as.Date("2017-06-14") - 0:364,
value = runif(365) - seq(-140, 224)^2 / 10000
)
p3 <- ggplot(data3, aes(x=day, y=value)) +
geom_line( color="#69b3a2") +
xlab("") +
theme_ipsum() +
theme(axis.text.x=element_text(angle=60, hjust=1))
fig5 <- ggplotly(p3)
scatter_3 = data.frame(x = rnorm(100,100,100), y = rnorm(100,100,100))
fig6 <- plot_ly(data = scatter_3, x = ~x, y = ~y)
Run Code Online (Sandbox Code Playgroud)
之后,我使用“plotly”库中的“subplot”函数来制作以下三个子图:
subplot1 <- subplot(fig1, fig2, nrows = 1, margin = 0.05)
subplot2 <- subplot(fig3, fig4, nrows = 2, margin = 0.05)
subplot3 <- subplot(fig5, fig6, nrows = 2, margin = 0.05)
Run Code Online (Sandbox Code Playgroud)
我想知道是否可以将这三个子图组合成一个“对象”(稍后可以保存为 HTML 文件,例如使用 htmlwidgets),如下所示:
#pseudocode (e.g. imagine some "wrap" function)
results = wrap(subplot1, subplot2, subplot3)
saveWidget( results, "results.html")
Run Code Online (Sandbox Code Playgroud)
也就是说,以用户可以在这 3 个子图之间导航的方式组合图。这可能吗?
有很多方法可以将这些结合起来。最简单的方法可能是subplot再次使用。
subplot(subplot1, subplot2, subplot3, nrows = 3, margin = .05,
heights = c(.2, .4, .4)) # proportion of subplot height
Run Code Online (Sandbox Code Playgroud)
听起来你想导出反应元素,这听起来不可导出。我知道闪亮可以模块化以便可重用,但我不认为它可以导出到 htmlwidget。如果图 1、3、5 和 2、4、6 是同一类型并且您制作了自定义滑块,则可能有这种情况。听起来对我来说很痛苦。