如何一起绘制 ggplotly 和 class "c('chorddiag', 'htmlwidget')" 图

How to plot ggplotly and class "c('chorddiag', 'htmlwidget')" plots together

我正在尝试绘制以下两个图表 chord 和 plt_interactive

library(igraph)
library(tidygraph)
library(chorddiag)
library(ggplot2)
m <- matrix(c(11975,  5871, 8916, 2868,
               1951, 10048, 2060, 6171,
               8010, 16145, 8090, 8045,
               1013,   990,  940, 6907),
               byrow = TRUE,
               nrow = 4, ncol = 4)
groupnames <- c("black", "blonde", "brown", "red")
row.names(m) <- groupnames
colnames(m) <- groupnames

chord= chorddiag(m,type = "bipartite")

plt <- ggplot(mtcars) + geom_bar(aes(x= factor(cyl)))+ coord_flip()
plt_interactive <- ggplotly(plt)
  1. 我曾经为两个ggplotly图做如下代码:

    plotly::subplot(f3, f4, nrows=2, heights = c(0.1, 0.9), margin = c(0,0,0.1,0))

但现在我不确定如何将这两个组合成子图,因为它们是不同类型的图

  1. 我也尝试了 patchwork 库并做了 f3 + f4 但它现在也可以工作了

  2. 我也尝试了 cowplot 库并做了 plot_grid(f3, f4) 没有运气

非常感谢任何帮助!

您可以使用 htmltools::browsable 将 "plots" 粘在一起。试试这个:

library(htmltools)
browsable(
  tagList(list(
    tags$div(
      #style = 'width:80%;display:block;float:left;',
      plt_interactive
    ),
    tags$div(
      #style = 'width:20%;display:block;float:left;',
      chord
    )
  ))
)

另一种方法是使用 crosstalk::bscols(plt_interactive, chord)