CanvasJS - 从烛台图中删除空洞/周末等
CanvasJS - Removed empty holes / weekends etc from candlesticks graph
如何从 CanvasJS 烛台图中删除空洞(如周末等)?
该图在周末等处留下一个大空洞,导致股市休市。
我查看了文档和 google,但我唯一发现的是这个 post 从 2015 年开始说它不可能。
https://canvasjs.com/forums/topic/hiding-nullempty-y-columns/
'
但是 CanvasJS 有一个内置选项来显示烛台。
我是不是漏掉了什么?
无法跳过周末和节假日,因为轴在整个日期范围内呈线性行为。
如果您只想显示工作日,那么最好使用 "label" 而不是 "x"。但它要求您在分配之前将 date/time 格式化为所需的字符串格式。您可以使用 formatDate() to do the same. Here is a page on label.
function skipWeekend(dps) {
// Skip the weekends
return dps.x.getDay() !== 6 && dps.x.getDay() !== 0;
}
也请看看这个jsFiddle。
需要将 "x" 元素更改为 "label"
var chart = new CanvasJS.Chart("chartContainer",
{
title:{
text: "Skipping Weekends in Candlestick Chart using Labels"
},
zoomEnabled: true,
axisY: {
includeZero:false,
title: "Prices",
prefix: "$ "
},
axisX: {
interval:1,
labelAngle: -45,
},
data: [
{
type: "candlestick",
dataPoints: [
{label: CanvasJS.formatDate(new Date(2012,01,01), "DDD DD MMM"),y:[5198, 5629, 5159, 5385]},
{label: CanvasJS.formatDate(new Date(2012,01,02), "DDD DD MMM"),y:[5366, 5499, 5135, 5295]},
{label: CanvasJS.formatDate(new Date(2012,01,03), "DDD DD MMM"),y:[5296, 5378, 5154, 5248]},
{label: CanvasJS.formatDate(new Date(2012,01,06), "DDD DD MMM"),y:[5283, 5348, 5032, 5229]},
{label: CanvasJS.formatDate(new Date(2012,01,07), "DDD DD MMM"),y:[5220, 5448, 5164, 5258]},
{label: CanvasJS.formatDate(new Date(2012,01,08), "DDD DD MMM"),y:[5276, 5735, 5215, 5703]},
{label: CanvasJS.formatDate(new Date(2012,01,09), "DDD DD MMM"),y:[5704, 5815, 4888, 5619]},
{label: CanvasJS.formatDate(new Date(2012,01,10), "DDD DD MMM"),y:[5609, 5885, 5548, 5879]},
{label: CanvasJS.formatDate(new Date(2012,01,13), "DDD DD MMM"),y:[6040, 6052, 5671, 5693]},
{label: CanvasJS.formatDate(new Date(2012,01,14), "DDD DD MMM"),y:[5702, 5971, 5604, 5682]},
{label: CanvasJS.formatDate(new Date(2012,01,15), "DDD DD MMM"),y:[5697, 5962, 5477, 5930]},
{label: CanvasJS.formatDate(new Date(2012,01,16), "DDD DD MMM"),y:[5911, 6229, 5910, 5985]},
{label: CanvasJS.formatDate(new Date(2012,01,17), "DDD DD MMM"),y:[5997, 6011, 5566, 5842]},
{label: CanvasJS.formatDate(new Date(2012,01,20), "DDD DD MMM"),y:[5480, 6142, 5318, 5735]},
{label: CanvasJS.formatDate(new Date(2012,01,21), "DDD DD MMM"),y:[5756, 6309, 5700, 6299]},
{label: CanvasJS.formatDate(new Date(2012,01,22), "DDD DD MMM"),y:[6289, 6342, 5972, 6176]},
{label: CanvasJS.formatDate(new Date(2012,01,23), "DDD DD MMM"),y:[6171, 6415, 6129, 6304]}
]
}
]
});
chart.render();
完整示例:
example
如何从 CanvasJS 烛台图中删除空洞(如周末等)?
该图在周末等处留下一个大空洞,导致股市休市。
我查看了文档和 google,但我唯一发现的是这个 post 从 2015 年开始说它不可能。 https://canvasjs.com/forums/topic/hiding-nullempty-y-columns/ '
但是 CanvasJS 有一个内置选项来显示烛台。
我是不是漏掉了什么?
无法跳过周末和节假日,因为轴在整个日期范围内呈线性行为。
如果您只想显示工作日,那么最好使用 "label" 而不是 "x"。但它要求您在分配之前将 date/time 格式化为所需的字符串格式。您可以使用 formatDate() to do the same. Here is a page on label.
function skipWeekend(dps) {
// Skip the weekends
return dps.x.getDay() !== 6 && dps.x.getDay() !== 0;
}
也请看看这个jsFiddle。
需要将 "x" 元素更改为 "label"
var chart = new CanvasJS.Chart("chartContainer",
{
title:{
text: "Skipping Weekends in Candlestick Chart using Labels"
},
zoomEnabled: true,
axisY: {
includeZero:false,
title: "Prices",
prefix: "$ "
},
axisX: {
interval:1,
labelAngle: -45,
},
data: [
{
type: "candlestick",
dataPoints: [
{label: CanvasJS.formatDate(new Date(2012,01,01), "DDD DD MMM"),y:[5198, 5629, 5159, 5385]},
{label: CanvasJS.formatDate(new Date(2012,01,02), "DDD DD MMM"),y:[5366, 5499, 5135, 5295]},
{label: CanvasJS.formatDate(new Date(2012,01,03), "DDD DD MMM"),y:[5296, 5378, 5154, 5248]},
{label: CanvasJS.formatDate(new Date(2012,01,06), "DDD DD MMM"),y:[5283, 5348, 5032, 5229]},
{label: CanvasJS.formatDate(new Date(2012,01,07), "DDD DD MMM"),y:[5220, 5448, 5164, 5258]},
{label: CanvasJS.formatDate(new Date(2012,01,08), "DDD DD MMM"),y:[5276, 5735, 5215, 5703]},
{label: CanvasJS.formatDate(new Date(2012,01,09), "DDD DD MMM"),y:[5704, 5815, 4888, 5619]},
{label: CanvasJS.formatDate(new Date(2012,01,10), "DDD DD MMM"),y:[5609, 5885, 5548, 5879]},
{label: CanvasJS.formatDate(new Date(2012,01,13), "DDD DD MMM"),y:[6040, 6052, 5671, 5693]},
{label: CanvasJS.formatDate(new Date(2012,01,14), "DDD DD MMM"),y:[5702, 5971, 5604, 5682]},
{label: CanvasJS.formatDate(new Date(2012,01,15), "DDD DD MMM"),y:[5697, 5962, 5477, 5930]},
{label: CanvasJS.formatDate(new Date(2012,01,16), "DDD DD MMM"),y:[5911, 6229, 5910, 5985]},
{label: CanvasJS.formatDate(new Date(2012,01,17), "DDD DD MMM"),y:[5997, 6011, 5566, 5842]},
{label: CanvasJS.formatDate(new Date(2012,01,20), "DDD DD MMM"),y:[5480, 6142, 5318, 5735]},
{label: CanvasJS.formatDate(new Date(2012,01,21), "DDD DD MMM"),y:[5756, 6309, 5700, 6299]},
{label: CanvasJS.formatDate(new Date(2012,01,22), "DDD DD MMM"),y:[6289, 6342, 5972, 6176]},
{label: CanvasJS.formatDate(new Date(2012,01,23), "DDD DD MMM"),y:[6171, 6415, 6129, 6304]}
]
}
]
});
chart.render();
完整示例: example