仅一张图表的 Highcharts 'bindAxis'
Highcharts 'bindAxis' for one chart only
我正在尝试在我的应用程序中集成 MariMekko/Market 类型的图表。我在这里发现了一个有趣的实现:
http://jsfiddle.net/h2np93k1/39/
此代码构建树状图并向其添加轴。这是通过以下代码片段完成的:
Highcharts.seriesTypes.treemap.prototype.bindAxes = function() {
Highcharts.Series.prototype.bindAxes.call(this);
};
但是,如果我理解正确的话,这将导致我所有的 treemap
图表都有坐标轴。我不想要这个,我只想为我的 marimekko 地图保留轴。
完成此任务的最佳方法是什么?例如,有扩展图表类型的简单方法吗?
最简单的方法是包装一个核心函数并添加条件语句来检查选项并在需要时应用修改。
在这种情况下,我在系列中添加了 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
我正在尝试在我的应用程序中集成 MariMekko/Market 类型的图表。我在这里发现了一个有趣的实现:
http://jsfiddle.net/h2np93k1/39/
此代码构建树状图并向其添加轴。这是通过以下代码片段完成的:
Highcharts.seriesTypes.treemap.prototype.bindAxes = function() {
Highcharts.Series.prototype.bindAxes.call(this);
};
但是,如果我理解正确的话,这将导致我所有的 treemap
图表都有坐标轴。我不想要这个,我只想为我的 marimekko 地图保留轴。
完成此任务的最佳方法是什么?例如,有扩展图表类型的简单方法吗?
最简单的方法是包装一个核心函数并添加条件语句来检查选项并在需要时应用修改。
在这种情况下,我在系列中添加了 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