javascript - highcharts 中一张图表上的多个时间线
问题描述
我希望在 highcharts 中制作以下图表
https://drive.google.com/open?id=1eh9QTsiENZkQoipKkoYglNN_IJFqlkez
最好的方法是什么?
- 我应该使用时间线图表 API 的一些变体(https://www.highcharts.com/docs/chart-and-series-types/timeline),还是
- 我应该使用带有水平线的散点图的一些变体吗?(https://www.highcharts.com/docs/chart-and-series-types/scatter-chart)
任何指导和代码示例将不胜感激
非常感谢
解决方案
您应该尝试使用带有水平线的散点图的变体。检查下面发布的演示和代码。
代码:
function generateLineData(year) {
return [
[+new Date('01-01-2019'), year],
[+new Date('04-01-2019'), year],
[+new Date('07-01-2019'), year],
[+new Date('10-01-2019'), year]
]
}
function generateScatterData(year) {
return [
[+new Date('01-10-2019'), year],
[+new Date('01-27-2019'), year],
[+new Date('03-08-2019'), year],
[+new Date('04-13-2019'), year],
[+new Date('04-13-2019'), year],
[+new Date('07-22-2019'), year],
[+new Date('08-03-2019'), year],
[+new Date('09-23-2019'), year]
]
}
Highcharts.chart('container', {
credits: {
enabled: false
},
yAxis: {
title: {
text: ''
},
gridLineWidth: 0,
labels: {
formatter: function() {
const values = [2017, 2018, 2019]
if (values.includes(this.value)) {
return this.value;
}
return '';
}
}
},
xAxis: {
type: 'datetime',
labels: {
formatter: function () {
return Highcharts.dateFormat('%b', this.value);
}
}
},
time: {
useUTC: false
},
plotOptions: {
line: {
enableMouseTracking: false,
marker: {
enabled: false
},
color: '#bbb',
lineWidth: 3
},
scatter: {
colorByPoint: true,
marker: {
symbol: 'circle',
radius: 7,
lineWidth: 2
}
}
},
series: [{
id: 'main',
name: 'line series',
data: generateLineData(2017)
}, {
linkedTo: 'main',
data: generateLineData(2018)
}, {
linkedTo: 'main',
data: generateLineData(2019)
}, {
linkedTo: 'main',
type: 'scatter',
data: generateScatterData(2017)
}, {
linkedTo: 'main',
type: 'scatter',
data: generateScatterData(2018)
}, {
linkedTo: 'main',
type: 'scatter',
data: generateScatterData(2019)
}],
});
<script src="https://code.highcharts.com/highcharts.js"></script>
<div id="container"></div>
演示:
推荐阅读
- python - 如何将结果列表保存到文件
- c# - 在字符串上调用字符串扩展方法与将字符串作为参数传递
- netsuite - 如何在 Netsuite 中启用自定义列表内部 ID
- r - 使用带有 if 语句的嵌套 for 循环
- linux - Flask、Nginx、Gunicorn Stack 启动 Selenium 实例
- docker - 退出后 Docker 容器统计信息为空
- c++ - 链表的数组实现
- javascript - 如何从javascript中的for循环内部获取价值?
- python - 如何将 django 模型迁移到 MySQL 只读数据库?
- python - Django rest框架 - 序列化本机对象的所有字段