将 R 中的多个绘图组合在一起

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 个子图之间导航的方式组合图。这可能吗?

Kat*_*Kat 5

有很多方法可以将这些结合起来。最简单的方法可能是subplot再次使用。

subplot(subplot1, subplot2, subplot3, nrows = 3, margin = .05, 
        heights = c(.2, .4, .4)) # proportion of subplot height
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述


R_P*_*udo 2

听起来你想导出反应元素,这听起来不可导出。我知道闪亮可以模块化以便可重用,但我不认为它可以导出到 htmlwidget。如果图 1、3、5 和 2、4、6 是同一类型并且您制作了自定义滑块,则可能有这种情况。听起来对我来说很痛苦。