highcharts 如何在甘特中添加新的Y类别

p1iqtdky  于 2022-11-10  发布在  Highcharts
关注(0)|答案(1)|浏览(168)

我有一个包含多个泳道(Y类别)的图表,如下所示:

正如你所看到的,我在Y轴上有一个类别列表,其中一个是空的(这是有意的意思,这个空的是采购部分2),我们的目标是:
1.在顶部/左侧添加一个可以运行操作的按钮(在本例中,询问新Y的名称),但您可以看到,在我们将鼠标置于其上之前,该按钮未正确显示,请检查以下图像:

按钮在左上角显示如下:

但应显示如下:

我们遗漏了什么?还是应用程序中的错误?
1.我们正在尝试**添加一个新通道(Y轴)**我们尝试了2种方法,这两种方法都不报告错误,只是什么也不做......我们注意到类别列表被修改,但即使调用重绘也没有反映出更改......这是我们的代码:
图表.渲染器.按钮('New Lane',10,10,函数(){

var yAxes = chart.axes.filter(f => f.coll == 'yAxis');

     var yAxis = yAxes[0];

     var cats = yAxis.categories;

     cats.push('SOMETHING');

     console.log(cats);

     yAxis.setCategories(cats, true);

     //yAxis.update({
     //    categories: cats
     //}, true);

 }).add();

**换句话说:**我们想知道为什么按钮没有正确呈现,以及如何向Y轴添加类别。

谢谢你的帮助。

zzlelutf

zzlelutf1#

您正确地使用了button renderer方法来添加按钮,现在将其放置在chart.events.render中。

chart: {
    events: {
      render: function() {
        let chart = this,
          series = chart.series,
          plotLeft = chart.plotLeft,
          plotTop = chart.plotTop,
          plotWidth = chart.plotWidth;

        if (chart.myBtn) {
          chart.myBtn.destroy();
        }

        chart.myBtn = chart.renderer.button('button', plotLeft - 80, plotTop - 130, function() {
            console.log('your button');
          })
          .attr({
            'stroke-width': 1,
            stroke: 'green'
          })
          .add();
      }
    }
  },

如何设置yAxis的类别可以通过方法setCategories on Highcharts.Axis或者用update更新yAxis来实现。
现场演示:https://jsfiddle.net/BlackLabel/dL6c2zrp/

相关问题