繁体   English   中英

如何在 RStudio 查看器中并排查看 plot Highcharter?

[英]How to plot Highcharter side by side in RStudio Viewer?

I wanted to see an exact output of a Highcharter plot side by side in RStudio Viewer if it possible, exactly showed in this reference: http://jkunst.com/highcharter/highcharts.html , So let me define it like this for a简单用法

highcharter_all_plot <- function(){
  library(highcharter)
  library(dplyr)
  library(stringr)
  library(purrr)
  n <- 5
  set.seed(123)
  colors <- c("#d35400", "#2980b9", "#2ecc71", "#f1c40f", "#2c3e50", "#7f8c8d")
  colors2 <- c("#000004", "#3B0F70", "#8C2981", "#DE4968", "#FE9F6D", "#FCFDBF")

  df <- data.frame(x = seq_len(n) - 1) %>% 
    mutate(
      y = 10 + x + 10 * sin(x),
      y = round(y, 1),
      z = (x*y) - median(x*y),
      e = 10 * abs(rnorm(length(x))) + 2,
      e = round(e, 1),
      low = y - e,
      high = y + e,
      value = y,
      name = sample(fruit[str_length(fruit) <= 5], size = n),
      color = rep(colors, length.out = n),
      segmentColor = rep(colors2, length.out = n)
    )

  print(head(df))

  create_hc <- function(t) {
    dont_rm_high_and_low <- c("arearange", "areasplinerange",
                              "columnrange", "errorbar")
    is_polar <- str_detect(t, "polar")
    t <- str_replace(t, "polar", "")
    if(!t %in% dont_rm_high_and_low){
      df <- df %>% dplyr::select(-e, -low, -high)
    } 
    highchart() %>%
      hc_title(text = paste(ifelse(is_polar, "polar ", ""), t),
               style = list(fontSize = "15px")) %>% 
      hc_chart(type = t,
               polar = is_polar) %>% 
      hc_xAxis(categories = df$name) %>% 
      hc_add_series(df, name = "Fruit Consumption", showInLegend = FALSE) 
  }

  hcs <- c("line", "spline",  "area", "areaspline",
           "column", "bar", "waterfall" , "funnel", "pyramid",
           "pie" , "treemap", "scatter", "bubble",
           "arearange", "areasplinerange", "columnrange", "errorbar",
           "polygon", "polarline", "polarcolumn", "polarcolumnrange",
           "coloredarea", "coloredline")  %>% map(create_hc) 
  return(hcs)
}

x <- highcharter_all_plot()

#Then plot can be accessed in by calling x[[1]], x[[2]], x[[3]]..

据我对并排 plot 的理解,我只知道 2 个这些方便的方法,即:

1) 使用 par(mfrow)

par(mfrow=c(3,4)) -> (只能应用于基础图)

2) 使用 gridExtra 中的 grid.arrange

library(gridExtra)
grid.arrange(x[[1]], x[[2]], x[[3]], x[[4]], nrow=2, ncol=2)

->(不能工作,因为 x 不是 ggplot 类型)

所以我想知道是否有一种方法可以应用它? 我是使用 Highcharter 的新手

如果您检查您提供的 Highcharter 网站,您会发现这些图表没有使用 R 并排放置,但它们只是单独的 HTML 容器中的渲染器,并由引导程序 (CSS) 定位。 因此,如果您想在 HTML 环境中渲染图表,我建议将每个图表渲染到单独的 div 中。

但也许Shiny是您正在寻找的工具。 也许这是Shiny rcharts 多个图表 output的副本

也许这也会对您有所帮助: https://github.com/jbkunst/highcharter/issues/37

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM