高图中的构面功能

时间:2018-10-21 15:52:25

标签: r ggplot2 r-highcharter

我有一个类似此示例的数据:

df <-
  data.frame(
    date = seq(as.Date("2015-01-01"), as.Date("2015-12-31"), 100),
    id = rep(LETTERS, each = 4)[1:100],
    replicate(2, sample(1001, 100))
  )

用ggplot绘制是可以的

ggplot(df, aes(x = date)) +
  geom_line(aes(y = X1)) +
  geom_line(aes(y = X2), linetype = 2) +
  facet_wrap( ~ id , scales = "free") 

我在highchart中找到了有关方面实现的一些信息 higcharter-grid-test 并且我尝试使用highchart对其进行绘制以进行交互式绘制,但是不推荐使用highchart::hw_grid()browsable()。有人可以帮我绘制数据吗?

我的代码段:

  highchart() %>% 
    hc_add_series(name = "X1", data = df$X1) %>% 
    hc_add_series(name = "X2", data = df$X2) %>% 
    hw_grid(id, rowheight = 200, ncol = 3)

1 个答案:

答案 0 :(得分:3)

hw_gridbrowsable 方法似乎对我仍然有效。

library(tidyverse)
library(highcharter)

创建和重塑数据


df <-
  data.frame(
    date = seq(as.Date("2015-01-01"), as.Date("2015-12-31"), 100),
    id = rep(LETTERS, each = 4)[1:100],
    replicate(2, sample(1001, 100))
  )

# Reshape data to long format
df_long <-
  df %>%
  pivot_longer(cols = c("X1", "X2"))

检查

head(df_long, 12)
#> # A tibble: 12 x 4
#>    date       id    name  value
#>    <date>     <chr> <chr> <int>
#>  1 2015-01-01 A     X1      490
#>  2 2015-01-01 A     X2      868
#>  3 2015-04-11 A     X1      422
#>  4 2015-04-11 A     X2      751
#>  5 2015-07-20 A     X1      958
#>  6 2015-07-20 A     X2       52
#>  7 2015-10-28 A     X1      486
#>  8 2015-10-28 A     X2      680
#>  9 2015-01-01 B     X1      631
#> 10 2015-01-01 B     X2      425
#> 11 2015-04-11 B     X1      532
#> 12 2015-04-11 B     X2      402

长数据也更适合你制作的ggplot

df_long %>%
  ggplot() +
  geom_line(aes(x = date, y = value, linetype = name)) +
  facet_wrap(~id)

现在高宪章

在每个字母上迭代绘图代码,将输出存储在列表中

list_of_plots <- map(LETTERS, function(x) {
  
  filtered <-
    df_long %>%
    filter(id == x)

  highchart() %>%
    hc_add_series(data = filtered,
                  hcaes(x = date, y = value, group = name),
                  type = "line") %>%
    hc_title(text = x)   
  
  })

然后将最终列表传递给 hw_grid 函数。

hw_grid(list_of_plots, rowheight = 300) %>%
  htmltools::browsable()

这是(部分)输出:

enter image description here

reprex package (v1.0.0) 于 2021 年 3 月 5 日创建