如何在同一图中获取不同的图表类型
How to get different chart types in same plot
在 R
的 highchart
js
包中,有什么方法可以组合各种图表类型,如线+区域?我找到了一个 hc_add_series()
函数,但不明白我应该如何使用它。以下是我的代码 -
library(highcharter)
library(dplyr)
Data = data.frame(date = seq(Sys.Date(), Sys.Date()-20, by = '-1 day'), value1 = 10:30, variable = "A") %>% mutate(value2 = cumsum(value1))
hchart(Data,
"column",
hcaes(x = date, y = value1, group = variable)) %>%
hc_add_series(data = Data, hcaes(x = date, y = value2), type = 'area', yAxis = 1)
这实际上什么都没有绘制。为什么呢?我想将 value2
绘制为 area
绘制 w.r.t。 secondary axis
但是该轴应保持 invisible
。
任何指点将不胜感激。
我认为没有太大区别,您可以在 Rails 上使用 R 或 Ruby 进行自定义。
要在一个图表中组合多种图表类型,您只需要创建一系列不同类型的图表:
当您实例化 Highcharts 实例时,您可以通过显示不同的类型来设置 series
。
series: [{
type: 'column',
name: 'Jane',
data: [3, 2, 1, 3, 4] }, {
type: 'column',
name: 'John',
data: [2, 3, 5, 7, 6] }, {
type: 'column',
name: 'Joe',
data: [4, 3, 3, 9, 0] }, {
type: 'spline',
name: 'Average',
data: [3, 2.67, 3, 6.33, 3.33] }]
这是来自官方文档的示例。
正如您在代码片段中看到的,您可以设置要绘制的内容 type
。例如column
、spline
等...
并根据他们的类型设置data
。
https://www.highcharts.com/demo/combo
https://jsfiddle.net/gh/get/library/pure/highcharts/highcharts/tree/master/samples/highcharts/demo/combo/
但请注意此解决方案适用于 Javascript。
您可能想看看如何将此方法与 R
一起使用
您在开发人员控制台中有一个 error 18
,表示您将系列连接到不存在的轴。这是真的 - 您通过 yAxis: 1
将系列连接到索引为 1
的轴,但您尚未创建该轴。
通常,您不需要创建另一个轴。您可以只删除此 yAxis: 1
并且将显示两个系列:
library(highcharter)
library(dplyr)
Data = data.frame(date = seq(Sys.Date(), Sys.Date()-20, by = '-1 day'), value1 = 10:30, variable = "A") %>% mutate(value2 = cumsum(value1))
hchart(Data,
"column",
hcaes(x = date, y = value1, group = variable)) %>%
hc_add_series(data = Data, hcaes(x = date, y = value2), type = 'area')
但是,如果这是有意为之,并且您确实想为每个系列创建单独的轴并分别显示它们,请告诉我,我会帮助您。
编辑: 这里我使用 hc_yAxis_multiple
创建了第二个轴,我将区域系列连接到它并隐藏了这个轴:
library(highcharter)
library(dplyr)
Data = data.frame(date = seq(Sys.Date(), Sys.Date()-20, by = '-1 day'), value1 = 10:30, variable = "A") %>% mutate(value2 = cumsum(value1))
hchart(Data,
"column",
hcaes(x = date, y = value1, group = variable)) %>%
hc_yAxis_multiples(
list(), # first yAxis
list(visible = FALSE) # second yAxis
) %>%
hc_add_series(data = Data, hcaes(x = date, y = value2), type = 'area', yAxis = 1)
编辑 2: 这是根据您的新要求调整的更新代码。我设置 tooltip.shared: true
(hc_tooltip(shared = TRUE) %>%
) 并为一个系列设置 zIndex:
library(highcharter)
library(dplyr)
Data = data.frame(date = seq(Sys.Date(), Sys.Date()-20, by = '-1 day'), value1 = 10:30, variable = "Column") %>% mutate(value2 = cumsum(value1))
hchart(Data,
"column",
hcaes(x = date, y = value1, group = variable), zIndex = 1, opacity = 0.9) %>%
hc_tooltip(shared = TRUE) %>%
hc_yAxis_multiples(
list(), # first yAxis
list(visible = FALSE) # second yAxis
) %>%
hc_add_series(data = Data, hcaes(x = date, y = value2), type = 'area', name = 'Area', yAxis = 1, zIndex = 0)
我在列系列上另外设置了不透明度 0.9,但您可以将其删除。
在 R
的 highchart
js
包中,有什么方法可以组合各种图表类型,如线+区域?我找到了一个 hc_add_series()
函数,但不明白我应该如何使用它。以下是我的代码 -
library(highcharter)
library(dplyr)
Data = data.frame(date = seq(Sys.Date(), Sys.Date()-20, by = '-1 day'), value1 = 10:30, variable = "A") %>% mutate(value2 = cumsum(value1))
hchart(Data,
"column",
hcaes(x = date, y = value1, group = variable)) %>%
hc_add_series(data = Data, hcaes(x = date, y = value2), type = 'area', yAxis = 1)
这实际上什么都没有绘制。为什么呢?我想将 value2
绘制为 area
绘制 w.r.t。 secondary axis
但是该轴应保持 invisible
。
任何指点将不胜感激。
我认为没有太大区别,您可以在 Rails 上使用 R 或 Ruby 进行自定义。
要在一个图表中组合多种图表类型,您只需要创建一系列不同类型的图表:
当您实例化 Highcharts 实例时,您可以通过显示不同的类型来设置 series
。
series: [{
type: 'column',
name: 'Jane',
data: [3, 2, 1, 3, 4] }, {
type: 'column',
name: 'John',
data: [2, 3, 5, 7, 6] }, {
type: 'column',
name: 'Joe',
data: [4, 3, 3, 9, 0] }, {
type: 'spline',
name: 'Average',
data: [3, 2.67, 3, 6.33, 3.33] }]
这是来自官方文档的示例。
正如您在代码片段中看到的,您可以设置要绘制的内容 type
。例如column
、spline
等...
并根据他们的类型设置data
。
https://www.highcharts.com/demo/combo https://jsfiddle.net/gh/get/library/pure/highcharts/highcharts/tree/master/samples/highcharts/demo/combo/
但请注意此解决方案适用于 Javascript。
您可能想看看如何将此方法与 R
您在开发人员控制台中有一个 error 18
,表示您将系列连接到不存在的轴。这是真的 - 您通过 yAxis: 1
将系列连接到索引为 1
的轴,但您尚未创建该轴。
通常,您不需要创建另一个轴。您可以只删除此 yAxis: 1
并且将显示两个系列:
library(highcharter)
library(dplyr)
Data = data.frame(date = seq(Sys.Date(), Sys.Date()-20, by = '-1 day'), value1 = 10:30, variable = "A") %>% mutate(value2 = cumsum(value1))
hchart(Data,
"column",
hcaes(x = date, y = value1, group = variable)) %>%
hc_add_series(data = Data, hcaes(x = date, y = value2), type = 'area')
但是,如果这是有意为之,并且您确实想为每个系列创建单独的轴并分别显示它们,请告诉我,我会帮助您。
编辑: 这里我使用 hc_yAxis_multiple
创建了第二个轴,我将区域系列连接到它并隐藏了这个轴:
library(highcharter)
library(dplyr)
Data = data.frame(date = seq(Sys.Date(), Sys.Date()-20, by = '-1 day'), value1 = 10:30, variable = "A") %>% mutate(value2 = cumsum(value1))
hchart(Data,
"column",
hcaes(x = date, y = value1, group = variable)) %>%
hc_yAxis_multiples(
list(), # first yAxis
list(visible = FALSE) # second yAxis
) %>%
hc_add_series(data = Data, hcaes(x = date, y = value2), type = 'area', yAxis = 1)
编辑 2: 这是根据您的新要求调整的更新代码。我设置 tooltip.shared: true
(hc_tooltip(shared = TRUE) %>%
) 并为一个系列设置 zIndex:
library(highcharter)
library(dplyr)
Data = data.frame(date = seq(Sys.Date(), Sys.Date()-20, by = '-1 day'), value1 = 10:30, variable = "Column") %>% mutate(value2 = cumsum(value1))
hchart(Data,
"column",
hcaes(x = date, y = value1, group = variable), zIndex = 1, opacity = 0.9) %>%
hc_tooltip(shared = TRUE) %>%
hc_yAxis_multiples(
list(), # first yAxis
list(visible = FALSE) # second yAxis
) %>%
hc_add_series(data = Data, hcaes(x = date, y = value2), type = 'area', name = 'Area', yAxis = 1, zIndex = 0)
我在列系列上另外设置了不透明度 0.9,但您可以将其删除。