highcharts 中的 Facet 函数
Facet function in highcharts
我有一个像这个例子的数据:
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 中找到了一些关于 facet 实现的信息
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)
hw_grid
和 browsable
方法似乎对我仍然有效。
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()
这是(部分)输出:
由 reprex package (v1.0.0)
于 2021-03-05 创建
我有一个像这个例子的数据:
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 中找到了一些关于 facet 实现的信息
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)
hw_grid
和 browsable
方法似乎对我仍然有效。
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()
这是(部分)输出:
由 reprex package (v1.0.0)
于 2021-03-05 创建