区域图中的角度高图表自定义图例标签

时间:2019-02-20 14:36:44

标签: javascript angular charts highcharts angular2-highcharts

我必须在面积图类型中自定义标签符号,就像在折线图类型中一样:

我有此代码:

Highcharts.chart('container', {
        chart: {
        type: 'area'
    },

    xAxis: {
        categories: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec']
    },

    plotOptions: {
        series: {
            marker: {
                enabled: false
            }
        }
    },

    series: [{
        data: [29.9, 71.5, 106.4, 129.2, 144.0, 176.0, 135.6, 148.5, 216.4, 194.1, 95.6, 54.4]
    }]
});

我的传说是这样的: Result

我希望有这个enter image description here

我无法编辑CSS样式,这只能是对此图表的专有定制。

我正在使用Angular 7.2,我已经用这个导入了Highchart:

import {Chart} from 'angular-highcharts';

2 个答案:

答案 0 :(得分:3)

line .prototype.drawLegendSymbol交换 area .prototype.drawLegendSymbol方法。在纯JS中就足够了:

Highcharts.seriesTypes.area.prototype.drawLegendSymbol =
Highcharts.seriesTypes.line.prototype.drawLegendSymbol;

jsFiddle

在角度模式下,您可以通过以下方式包装Highcharts:

(function(factory) {
  if (typeof module === "object" && module.exports) {
    module.exports = factory;
  } else {
    factory(Highcharts);
  }
})(function(Highcharts) {
  Highcharts.seriesTypes.area.prototype.drawLegendSymbol =
    Highcharts.seriesTypes.line.prototype.drawLegendSymbol;
});

docs:https://github.com/highcharts/highcharts-angular#to-load-a-wrapper

答案 1 :(得分:2)

您可以通过手动设置图例符号的宽度和高度来实现。您需要将squareSymbol设置为false,以允许使用不同的宽度和高度值:

legend: {
    squareSymbol: false,
    symbolHeight: 3,
    symbolWidth: 20
},

例如。

编辑

如果要将符号与文本对齐,请使用useHTML: true并设置lineHeight

  legend: {
    useHTML: true,
    itemStyle: {
      lineHeight: "23px"
    },
    squareSymbol: false,
    symbolHeight: 3,
    symbolWidth: 20
  },

See updated working jsfiddle here.