Highcharts的“bindAxis”仅适用于一个图表

时间:2017-11-16 08:24:18

标签: javascript highcharts marimekko-chart

我正在尝试在我的应用程序中集成MariMekko / Market类型的图表。我在这里找到了一个有趣的实现:

http://jsfiddle.net/h2np93k1/39/

此代码构造一个树形图并向其添加轴。这是通过以下代码段完成的:

Highcharts.seriesTypes.treemap.prototype.bindAxes = function() {
    Highcharts.Series.prototype.bindAxes.call(this);
};

但是,如果我理解正确,这将导致我的所有treemap图表都有轴。我不想要这个,我想保留轴只用于我的marimekko地图。

实现这一目标的最佳方法是什么?例如,有一种简单的方法来扩展图表类型吗?

1 个答案:

答案 0 :(得分:1)

简单的方法是换行核心函数并添加条件语句来检查选项并在需要时应用修改。

在这种情况下,我在系列中添加了isMariMekko标志。如果确实是修改后的代码执行。原始函数启动是错误的:

  Highcharts.wrap(Highcharts.seriesTypes.treemap.prototype, 'bindAxes', function(proceed) {
    if (this.options.isMariMekko) {
      var treeAxis = {
        min: 0,
        dataMin: 0,
        max: 100,
        dataMax: 0
      };

      Highcharts.Series.prototype.bindAxes.call(this);
      Highcharts.extend(this.yAxis.options, treeAxis);
      Highcharts.extend(this.xAxis.options, treeAxis);

    } else {
      proceed.apply(this); // default action
    }

  });

关于换行的文档参考: https://www.highcharts.com/docs/extending-highcharts/extending-highcharts