Es kann nicht nur durch die Verwendung Highcharts Konstruktor Optionen.
(function(H) {
var merge = H.merge;
H.wrap(H.Legend.prototype, 'getAllItems', function() {
var allItems = [],
chart = this.chart,
options = this.options,
legendID = options.legendID;
H.each(chart.series, function(series) {
if (series) {
var seriesOptions = series.options;
// use points or series for the legend item depending on legendType
if (!isNaN(legendID) && (seriesOptions.legendID === legendID)) {
allItems = allItems.concat(
series.legendItems ||
(seriesOptions.legendType === 'point' ?
series.data :
series)
);
}
}
});
return allItems;
});
H.wrap(H.Chart.prototype, 'render', function(p) {
var chart = this,
chartOptions = chart.options;
chart.firstLegend = new H.Legend(chart, merge(chartOptions.legend, chartOptions.firstLegend, {
legendID: 0
}));
chart.secondLegend = new H.Legend(chart, merge(chartOptions.legend, chartOptions.secondLegend, {
legendID: 1
}));
p.call(this);
});
H.wrap(H.Chart.prototype, 'redraw', function(p, r, a) {
var chart = this;
p.call(chart, r, a);
chart.firstLegend.render();
chart.secondLegend.render();
});
H.wrap(H.Legend.prototype, 'positionItem', function(p, item) {
p.call(this, item);
});
})(Highcharts);
Highcharts Optionen:
Highcharts.chart('container', {
chart: {
marginRight: 350 // create some space for the legend
},
legend: {
verticalAlign: 'middle',
width: 300,
align: 'right'
},
firstLegend: {
y: -25
},
secondLegend: {
y: 25
},
series: [{
data: [5, 6, 7],
legendID: 0,
}, {
data: [2, 3, 1],
legendID: 0,
},
(...)
{
data: [1, 8, 2],
legendID: 1
}, {
data: [3, 2],
legendID: 1
},
(...)
]
});
Live-Demo: Sie können durch Einwickeln einige Kernfunktionen diese Art von Aussehen und Verhalten erreichenhttp://jsfiddle.net/kkulig/r70fwasr/
Dieser Code kann sein optimiert, so dass es für mehr als 2 Legenden funktioniert.
Ich glaube nicht, dass das möglich ist [hier] (https://stackoverflow.com/questions/46662883/is-it-possible-to-insert-a-break-in-the-high-charts-legend/46665915 # 46665915) – Core972