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

问题描述 投票:0回答:1

有没有办法将各种图表类型(如线+区域)组合在一起,并在 highchart js 包的 R? 我发现一个函数为 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. a secondary axis 但该轴应保持 invisible.

如果有任何提示,将非常感谢。

javascript highcharts r-highcharter
1个回答
1
投票

你有一个 error 18 开发者控制台中,说你把系列连接到了不存在的轴上。这是真的--你把系列连接到了有索引的轴上。1yAxis: 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,但你可以将其删除。


1
投票

我认为没有太大的区别,无论是你使用R或Ruby on Rails来定制。要在一个图表中结合几种图表类型,你只需要创建不同类型的系列:当你实例化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.comdemocombohttps:/jsfiddle.netghgetlibrarypurehighchartshighchartstreemastersampleshighchartsdemocombo。

但请注意,这个解决方案是针对Javascript的.你可能想看看你如何使用这种方法与 R

© www.soinside.com 2019 - 2024. All rights reserved.