Highchart Persist bar widh for null data

时间:2018-06-13 13:26:40

标签: highcharts

我有一个简单的HighStock图表,有两个系列,如下图所示:

https://stackblitz.com/edit/angular-segnwt

功能明智,只要添加新系列,HighChart就会减小条的宽度。

但是当我在特定点只有一个系列的数据时,我不想减小条的宽度。 (这里日期,5月17日)

这是我创建的enter image description here。尝试隐藏其中一个系列并查看栏的宽度。应该对" 17上的条应用相同的宽度。可"当两个系列都可见时,因为该日期只有一个系列的数据。如下图所示:

Fiddle

我使用了以下代码:

vector_t.erase(std::remove_if(vector_t.begin(), vector_t.end(), [](const hello &h) { return h.x; }), vector_t.end());

我怎样才能做到这一点?

1 个答案:

答案 0 :(得分:0)

系列有两个用于控制点的范围和位置的属性:pointRange& pointPlacement。他们适用于所有系列赛。点,不幸的是,不能应用于各个列。

解决方法

停用grouping并重置pointPadding& groupPadding

  plotOptions: {
    series: {
      grouping: false,
      pointPadding: 0,
      groupPadding: 0
    }
  },

为每个点创建一个单独的系列,并应用适当的pointRange& pointPadding给他们。然后使用linkedTo属性链接它们以模仿原始系列结构:

  series: [{
    name: 'First series',
    color: '#bada55',
    data: [
      [0, 2]
    ],
    pointRange: 0.4,
    pointPlacement: -0.5
  }, {
    data: [
      [1, 7]
    ],
    linkedTo: ':previous',
    color: '#bada55',
    pointRange: 0.4,
    pointPlacement: -0.5
  }, {
    data: [
      [2, 5]
    ],
    linkedTo: ':previous',
    color: '#bada55',
    //pointRange: 1, // by default
    //pointPlacement: 0 // by default
  }, {
    data: [
      [3, 4]
    ],
    linkedTo: ':previous',
    color: '#bada55',
    pointRange: 0.4,
    pointPlacement: -0.5
  }, {
    name: 'Second series',
    data: [
      [0, 1]
    ],
    color: '#c0ffee',
    pointRange: 0.4,
    pointPlacement: 0.5
  }, {
    data: [
      [1, 2]
    ],
    linkedTo: ':previous',
    color: '#c0ffee',
    pointRange: 0.4,
    pointPlacement: 0.5
  }, {
    data: [
      [3, 2]
    ],
    linkedTo: ':previous',
    color: '#c0ffee',
    pointRange: 0.4,
    pointPlacement: 0.5
  }]

现场演示: http://jsfiddle.net/BlackLabel/q7j4m8eb/

这种方法的缺点是必须明确定义每个点(系列)的颜色,并且数据结构看起来有点复杂。

上述所有选项均可在API中找到: https://api.highcharts.com/highcharts/