如何在同一图中获取不同的图表类型

How to get different chart types in same plot

Rhighchart 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。例如columnspline 等... 并根据他们的类型设置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,但您可以将其删除。