深入到来自不同组的多个系列 - Highcharter(在 R 中)
Drilldown to multiple series from different groups - Highcharter (in R)
我正在寻找一种使用 Highcharter for R 从不同的组深入到多个系列的方法。本质上,我想在 High Charts(来自 jsfiddle)中重现这个例子 -
http://jsfiddle.net/wchmiel/v1o8dga9/3/
这是一些让我接近这个的代码 -
library(highcharter)
library(dplyr)
library(purrr)
df <- tibble(x = c(1, 2, 3, 2, 3, 4, 3, 5, 4), y = c(1, 2, 1, 3, 3, 2, 4, 6, 5), key = c(rep("A", 3), rep("B", 3), rep("C", 3)),
drilldown = c(rep("a", 3), rep("b", 3), rep("c", 3)))
drill1 <- data.frame(
x = c(1,2,3),
y = c(3, 3, 1)
)
drill1 <- list_parse2(drill1)
drill2 <- data.frame(
x = c(1,2,4),
y = c(1, 5, 1)
)
drill2 <- list_parse2(drill2)
drill3 <- data.frame(
x = c(1,2,4),
y = c(4, 3, 1)
)
drill3 <- list_parse2(drill3)
hchart(df, "line",
hcaes(x = x, y = y, group = key),
color = c("#A63A50", "#37123C", "#DDA77B"),
drilldown = TRUE) %>%
hc_plotOptions(line = list(marker = list(enabled = FALSE), legendIndex = 1)) %>%
hc_drilldown(
allowPointDrilldown = TRUE,
series = list(
list(
id = "a",
data = drill1
),
list(
id = "b",
data = drill2
),
list(
id = "c",
data = drill3
)
)
)
此脚本让我可以深入查看三个不同的图表,每组一个。但是,每个向下钻取图表只有一个系列。我不知道如何在向下钻取图表中包含 多个系列 。
向下钻取图表包含指向主图表 return 的按钮(如我的示例和 jsfiddle 示例),这一点很重要。此外,我需要能够深入研究不同组的不同图表,而不仅仅是一个组。
所以基本上我需要在 highcharter 中复制的 jsfiddle 示例。我怀疑解决方案涉及一些 javascript。
您可以使用 JS("...") 函数将提供的 jsFiddle 中的所有内容重写为 R。
这是一个例子:
library(highcharter)
library(dplyr)
library(purrr)
df <- tibble(x = c(1, 2, 3, 2, 3, 4, 3, 5, 4), y = c(1, 2, 1, 3, 3, 2, 4, 6, 5), key = c(rep("A", 3), rep("B", 3), rep("C", 3)),
drilldown = c(rep("a", 3), rep("b", 3), rep("c", 3)))
drill1 <- data.frame(
x = c(1,2,3),
y = c(3, 3, 1)
)
drill1 <- list_parse2(drill1)
drill2 <- data.frame(
x = c(1,2,4),
y = c(1, 5, 1)
)
drill2 <- list_parse2(drill2)
drill3 <- data.frame(
x = c(1,2,4),
y = c(4, 3, 1)
)
drill3 <- list_parse2(drill3)
hchart(df, "line",
hcaes(x = x, y = y, group = key),
color = c("#A63A50", "#37123C", "#DDA77B"),
drilldown = TRUE) %>%
hc_chart(events = list(drilldown = JS("function(e) {
e.preventDefault()
var chart = this,
series = [{
data: [5, 5, 5, 3, 2]
}, {
data: [3, 3, 7, 3, 3]
}];
chart.addSingleSeriesAsDrilldown(e.point, series[0]);
chart.addSingleSeriesAsDrilldown(e.point, series[1]);
chart.applyDrilldown();
}"))) %>%
hc_plotOptions(line = list(marker = list(enabled = FALSE), legendIndex = 1)) %>%
hc_drilldown(
allowPointDrilldown = TRUE,
series = list(
list(
id = "a",
data = drill1
),
list(
id = "b",
data = drill2
),
list(
id = "c",
data = drill3
)
)
)
以及简化的 jsFiddle 示例:https://jsfiddle.net/BlackLabel/nx6czgwf
现在您只需准备数据并使用 jsFiddle 中的代码。
我正在寻找一种使用 Highcharter for R 从不同的组深入到多个系列的方法。本质上,我想在 High Charts(来自 jsfiddle)中重现这个例子 - http://jsfiddle.net/wchmiel/v1o8dga9/3/
这是一些让我接近这个的代码 -
library(highcharter)
library(dplyr)
library(purrr)
df <- tibble(x = c(1, 2, 3, 2, 3, 4, 3, 5, 4), y = c(1, 2, 1, 3, 3, 2, 4, 6, 5), key = c(rep("A", 3), rep("B", 3), rep("C", 3)),
drilldown = c(rep("a", 3), rep("b", 3), rep("c", 3)))
drill1 <- data.frame(
x = c(1,2,3),
y = c(3, 3, 1)
)
drill1 <- list_parse2(drill1)
drill2 <- data.frame(
x = c(1,2,4),
y = c(1, 5, 1)
)
drill2 <- list_parse2(drill2)
drill3 <- data.frame(
x = c(1,2,4),
y = c(4, 3, 1)
)
drill3 <- list_parse2(drill3)
hchart(df, "line",
hcaes(x = x, y = y, group = key),
color = c("#A63A50", "#37123C", "#DDA77B"),
drilldown = TRUE) %>%
hc_plotOptions(line = list(marker = list(enabled = FALSE), legendIndex = 1)) %>%
hc_drilldown(
allowPointDrilldown = TRUE,
series = list(
list(
id = "a",
data = drill1
),
list(
id = "b",
data = drill2
),
list(
id = "c",
data = drill3
)
)
)
此脚本让我可以深入查看三个不同的图表,每组一个。但是,每个向下钻取图表只有一个系列。我不知道如何在向下钻取图表中包含 多个系列 。
向下钻取图表包含指向主图表 return 的按钮(如我的示例和 jsfiddle 示例),这一点很重要。此外,我需要能够深入研究不同组的不同图表,而不仅仅是一个组。
所以基本上我需要在 highcharter 中复制的 jsfiddle 示例。我怀疑解决方案涉及一些 javascript。
您可以使用 JS("...") 函数将提供的 jsFiddle 中的所有内容重写为 R。
这是一个例子:
library(highcharter)
library(dplyr)
library(purrr)
df <- tibble(x = c(1, 2, 3, 2, 3, 4, 3, 5, 4), y = c(1, 2, 1, 3, 3, 2, 4, 6, 5), key = c(rep("A", 3), rep("B", 3), rep("C", 3)),
drilldown = c(rep("a", 3), rep("b", 3), rep("c", 3)))
drill1 <- data.frame(
x = c(1,2,3),
y = c(3, 3, 1)
)
drill1 <- list_parse2(drill1)
drill2 <- data.frame(
x = c(1,2,4),
y = c(1, 5, 1)
)
drill2 <- list_parse2(drill2)
drill3 <- data.frame(
x = c(1,2,4),
y = c(4, 3, 1)
)
drill3 <- list_parse2(drill3)
hchart(df, "line",
hcaes(x = x, y = y, group = key),
color = c("#A63A50", "#37123C", "#DDA77B"),
drilldown = TRUE) %>%
hc_chart(events = list(drilldown = JS("function(e) {
e.preventDefault()
var chart = this,
series = [{
data: [5, 5, 5, 3, 2]
}, {
data: [3, 3, 7, 3, 3]
}];
chart.addSingleSeriesAsDrilldown(e.point, series[0]);
chart.addSingleSeriesAsDrilldown(e.point, series[1]);
chart.applyDrilldown();
}"))) %>%
hc_plotOptions(line = list(marker = list(enabled = FALSE), legendIndex = 1)) %>%
hc_drilldown(
allowPointDrilldown = TRUE,
series = list(
list(
id = "a",
data = drill1
),
list(
id = "b",
data = drill2
),
list(
id = "c",
data = drill3
)
)
)
以及简化的 jsFiddle 示例:https://jsfiddle.net/BlackLabel/nx6czgwf
现在您只需准备数据并使用 jsFiddle 中的代码。