有没有办法将各种图表类型(如线+区域)组合在一起,并在 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
.
如果有任何提示,将非常感谢。
你有一个 error 18
开发者控制台中,说你把系列连接到了不存在的轴上。这是真的--你把系列连接到了有索引的轴上。1
由 yAxis: 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或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