在 Zingchart 中定义 'step' 属性会导致图形不可用

Defining 'step' attribute in Zingchart renders the graph unusable

场景:

我能够使用 Zingchart 获得状态图,使用 堆叠 hbar 并绘制元素状态不变的数据间隔:

但是,我希望在提供时间的轴上有更多的分辨率。

问题:

我无法在 y-axis 中增加 ticks 的数量(这是一个堆叠的 hbar 图表,所以通常的 x-axis 实际上是 y-axis).

如果我在 scaleY 字段中引入 step:"1hour",,我会回到纪元 0,这就是我得到的:

问题:

我做错了什么?我想要:

在代码中,我从epoch 0跳到我开始有数据的时间,并定义minValue作为我有数据的第一个epoch减一来绘制第二。 这是工作代码(未定义 step 属性):

<!DOCTYPE html>
<html>

<head>
  <script src="/home/eballes/Work/backup/zingchart_test/zingchart_2.3.3/zingchart.min.js"></script>
  <script>
    zingchart.MODULESDIR = "/home/eballes/Work/backup/zingchart_test/zingchart_2.3.3/modules/";
  </script>
  <style></style>
</head>

<body>
  <div id='myChart'></div>
  <script>
var myConfig = {
    type: "hbar",
    utc:true,
    title: {
      text: 'Status'
    },
    scaleY:{
      transform:{
        type:'date',
        all:"%d/%M/%Y\n%H:%i:%s",
      },
      minValue:1456693864000, 
      zooming:true,
      label:{
        "text": "Time",
      },
      tick:{
          "line-color":"black",
          "line-width":"2px",
          "size":8,
      },
      maxItems:10,
      itemsOverlap:true,
      item:{
        "font-size":10
      },
    },
    scaleX:{
      label:{
        "text": "Item",
      },
    },
    plot:{
      stacked:true,
      exact:false,
      barWidth:10,
      rules:[
        {
          rule:'%data-customValue == 0',
          alpha:0, // Transparent
        },
        {
          rule:'%data-customValue == 1',
          backgroundColor:'#0000FF' // Dark Blue
        },
        {
          rule:'%data-customValue == 2',
          backgroundColor:'#00FFFF' // Light Blue
        },
        {
          rule:'%data-customValue == 3',
          backgroundColor:'#FF7F50' // Orange
        },
        {
          rule:'%data-customValue == 4',
          backgroundColor:'#FFFF00' // Yellow
        },
        {
          rule:'%data-customValue == 5',
          backgroundColor:'#EE82EE' // Purple
        },
        {
          rule:'%data-customValue == 6',
          backgroundColor:'#00FF00' // Green
        },
        {
          rule:'%data-customValue == 7',
          backgroundColor:'#FF0000' // Red
        },
      ]
    },
    tooltip:{
        jsRule:"CustomFn.formatTooltip()",
    },
    series : [
        {
            values : [
            [1,1456693864000],
            [2,1456693864000], 
            .... // From 1 to 36
            [36,1456693864000], 
            ],
            'data-customValue':[0,0,0,0,0,0,
                                0,0,0,0,0,0,
                                0,0,0,0,0,0,
                                0,0,0,0,0,0,
                                0,0,0,0,0,0,
                                0,0,0,0,0,0],
        },
                {
            values : [
[11, 32000], [12, 10270000], [14, 5033000], [18, 79000], [20, 43000], [24, 76000], [26, 4043000], [8, 33000], [9, 63000], 
            ],
            'data-customValue':[2, 6, 6, 0, 1, 2, 6, 1, 0, ],
        },
        {
            values : [
[14, 3000], [19, 20000], [26, 1000], [8, 86000], [9, 13000], 
            ],
            'data-customValue':[2, 2, 2, 0, 1, ],
        },
// All intervals

    ]
};

CustomFn = {};
CustomFn.formatTooltip = function(p){
  var hours = Math.floor(p.value / 3600000);
  var minutes = Math.floor((p.value % 3600000) / 60000);
  var seconds = (p.value % 60000)/1000;
  var tooltipText = "Item: " + p.scaletext + "\nDuration: ";

  var hoursText = (hours == 0) ? "" : (hours + "h ");
  var minutesText = (minutes == 0) ? "" : (minutes + "m");
  var secondsText = (seconds == 0) ? "" : (seconds + "s");

  tooltipText = tooltipText + hoursText + minutesText + secondsText + "\n";
  tooltipText = tooltipText + "Value: " + p['data-customValue'];

  var alpha = 70;

  // We don't want any tooltip for the time-jump
  if (hours > 300000) {
    tooltipText = "";
    alpha = 0;
  }

  return {
    text : tooltipText,
    backgroundColor : "#222",
    alpha: alpha,
  }
};

zingchart.render({
    id : 'myChart',
    data : myConfig,
    height: 670,
    width: '100%'
});
  </script>
</body>

</html>

这是整个示例的 link 到 Plunker,不起作用。如果您删除行 step:"1hour",它将起作用。

很有趣,step:20 工作正常。但我更愿意以 正常 的方式进行我的步骤,例如每小时。


注意:只是为了提供更多背景信息,这个问题是另一个 问题的延续。

完全公开,我是 ZingChart 团队的成员。

第一个问题是

step:'1hour'

该字符串值被我们的库解释为值 0。这是因为字符串“1hour”不匹配我们的任何关键字,也不计算为数字类型。我们不是简单地使用 parseInt,所以它的计算结果不是 1。

如果您想要一个小时的步数,您可以以毫秒为单位计算步数。这记录在我们的 scales page.

step:3600000

为了显示比例值,我们有一个 tokens 列表,允许您将比例值添加到工具提示中。在您的 customFn.formatTooltip 中,您将添加这一行。

  ...
  tooltipText = tooltipText + "Value: " + p['data-customValue'];
  tooltipText += '<br> %vv'

%vv 在我们的 tokens 列表中,它将从 y 轴上获取转换后的值。如果你这样做 %vt 它会给你毫秒值。