Da Sie nach einem ansprechenden Layout fragen, habe ich eine kleine Geige gemacht, die auf das Größenänderungsereignis hört und sich entsprechend den Legendenattributen ändert.
Nicht sicher, ob es so gut funktionieren wird (die Legende in jeder Position müssen einige Einstellung kann), aber der Geist ist die folgende:
$(function() {
$(document).ready(function() {
$(window).resize(function() {
var chart = $('#container').highcharts();
var isBig = chart.chartWidth > 450;
console.log(chart.chartWidth);
if (isBig) {
chart.legend.options.align = "right";
chart.legend.options.verticalAlign = "middle";
chart.legend.options.layout = "vertical";
chart.isDirtyLegend = true;
} else {
chart.legend.options.align = "center";
chart.legend.options.verticalAlign = "bottom";
chart.legend.options.layout = "horizontal";
chart.isDirtyLegend = true;
}
});
// Build the chart
$('#container').highcharts({
chart: {
plotBackgroundColor: null,
plotBorderWidth: null,
plotShadow: false,
type: 'pie'
},
title: {
text: 'Browser market shares January, 2015 to May, 2015'
},
tooltip: {
pointFormat: '{series.name}: <b>{point.percentage:.1f}%</b>'
},
legend: {
},
plotOptions: {
pie: {
allowPointSelect: true,
cursor: 'pointer',
dataLabels: {
enabled: false
},
showInLegend: true
}
},
series: [{
name: 'Brands',
colorByPoint: true,
data: [{
name: 'Microsoft Internet Explorer',
y: 56.33
}, {
name: 'Chrome',
y: 24.03,
sliced: true,
selected: true
}, {
name: 'Firefox',
y: 10.38
}, {
name: 'Safari',
y: 4.77
}, {
name: 'Opera',
y: 0.91
}, {
name: 'Proprietary or Undetectable',
y: 0.2
}]
}]
});
$(window).trigger("resize");
});
});
Auf jeder die Größe der Diagrammbreite überprüft und, wenn sie unter eine ist Schwellenwert Die Legende ändert Positionsattribute.
Wenn das Diagramm neu gezeichnet wird (was es würde, wenn sein Container kleiner wird), wird die Legende korrekt gezeichnet.
Beispiel Geige: https://jsfiddle.net/9xfL6rz1/2/
Dann werde ich brauchen nur diese in einer Resize-Funktion hinzuzufügen, damit es machen wird, wenn der Benutzer den Browser passt die Größe? Wäre das eine gute Idee? – banri16