Как построить графики ggplotly и класса "c ('chorddiag', 'htmlwidget')" вместе - PullRequest
0 голосов
/ 27 мая 2020

Я пытаюсь построить следующие два графика 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))

Но теперь я не был уверен, как объединить эти два в подзаголовки, поскольку это разные типы графиков

Я также пробовал patchwork библиотеку и делал f3 + f4, но теперь она работала либо

Я также пробовал cowplot библиотеку и делал plot_grid(f3, f4) с не повезло

Любая помощь очень ценится! enter image description here

1 Ответ

0 голосов
/ 27 мая 2020

Вы можете склеить «сюжеты», используя htmltools::browsable. Попробуйте следующее:

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).

...