[英]How to disble invisible legend padding in highcharts?
所以我正在創建一個圓環圖,使用 HighCharts。 我想根據以下參考圖像自定義圖例:在此處輸入圖像描述
這是我可以生成的圖像:在此處輸入圖像描述
所以第一張圖片是參考圖片,第二張是我用以下代碼生成的:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Donut Chart</title>
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" integrity="sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u" crossorigin="anonymous">
<script src="https://code.highcharts.com/highcharts.js"></script>
<script src="https://code.highcharts.com/modules/exporting.js"></script>
<style id="compiled-css" type="text/css">
div.g_Container{
position: relative;
width: 1000px;
height: 900px;
}
</style>
</head>
<body>
<div class="g_Container">
<div id="g_one"></div>
</div>
<script>
Highcharts.chart('g_one', {
chart: {
plotBackgroundColor: null,
// spacingLeft: 5,
plotShadow: false,
width: 536,
height: 194,
align: 'left',
// x:-40,
// y:75
},
title: {
text : '',
},
credits: {
enabled: false
},
exporting:{
width: 536,
height: 194,
align: 'left',
// x: -10
},
plotOptions: {
pie: {
slicedOffset: 2,
dataLabels: {
enabled: false,
},
startAngle: 100,
endAngle: 100,
showInLegend : true,
}
},
series: [{
type: 'pie',
// name, percentage of data, color, slicing is need or not//
keys: ['name', 'y', 'color', 'sliced'],
size: 168,
innerSize: 112,
// give data name, percentage the data occupies, color to represent the data//
data: [
['Eateris', 10 ,'#22306b', true],
['General payments', 10, '#000000', true],
['Shoping',10, '#9ca4be', true],
['Travel and Transort', 10, '#e1808b', true],
['Pastimes', 10, '#6d7272', true],
['Family and home', 10, '#6298bf', true],
['Utilities', 10, '#4a548e', true],
['Health and beauty', 10, '#ab4735', true],
['Groceries', 10, '#5e7ab9', true],
['Groups and charity', 10, '#d0d1d0', true],
],
showInLegend: true,
dataLabels: {
enabled: false
}
}],
legend: {
align: 'right',
verticalAlign: 'middle',
horizontalAlign: 'left',
height: 800,
width: 260,
// itemHeight: 50,
itemWidth:90,
itemStyle: {
font: 'Sans Serif Regular',
fontSize: 8,
// paddingBottom: 5
},
labelFormatter: function() {
return '<span style="color: '+this.color+'">'+ this.name + '</span>';},
itemHoverStyle: {
color: '#444'
},
symbolHeight: 10,
}
});
</script>
</body>
</html>
我想要實現的是,圖例項之間應該有水平間隙,圖例文本應該有 2 列和 5 行。 我已經根據它給出了寬度,因此圖例被分為兩列。 但是在圖例的第二列之后還有很多空間,但是圖例的文本並沒有正確顯示。 提前致謝
基本上,您正在嘗試為底部的圖例添加一些邊距,並且您不希望在圖例上換行。
我建議你在 legend.width 上增加你的寬度並將 legend.itemWidth 設置為它的一半以實現你的 2 列格式。
現在來到邊緣底部
legend.itemMarginBottom
可以用來實現它。 每個圖例項的像素下邊距。
默認為 0。
最后文本溢出:
legend.itemStyle.textOverflow : null
元素文本的換行樣式。 Highcharts SVG 元素在設置寬度時支持省略號。
<,DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width. initial-scale=1:0"> <title>Donut Chart</title> <link rel="stylesheet" href="https.//maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min:css" integrity="sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u" crossorigin="anonymous"> <script src="https.//code.highcharts.com/highcharts:js"></script> <script src="https.//code.highcharts.com/modules/exporting.js"></script> <style id="compiled-css" type="text/css"> div:g_Container { position; relative: width; 1000px: height; 900px. } </style> </head> <body> <div class="g_Container"> <div id="g_one"></div> </div> <script> Highcharts,chart('g_one': { chart: { plotBackgroundColor, null: // spacingLeft, 5: plotShadow, false: width, 536: height, 194: align, 'left': // x,-40: // y,75 }: title: { text, '', }: credits: { enabled, false }: exporting: { width, 536: height, 194: align, 'left': // x, -10 }: plotOptions: { pie: { slicedOffset, 2: dataLabels: { enabled, false, }: startAngle, 100: endAngle, 100: showInLegend, true, } }: series: [{ type, 'pie', // name, percentage of data, color: slicing is need or not// keys, ['name', 'y', 'color', 'sliced']: size, 168: innerSize, 112, // give data name, percentage the data occupies: color to represent the data// data, [ ['Eateris', 10, '#22306b', true], ['General payments', 10, '#000000', true], ['Shoping', 10, '#9ca4be', true], ['Travel and Transort', 10, '#e1808b', true], ['Pastimes', 10, '#6d7272', true], ['Family and home', 10, '#6298bf', true], ['Utilities', 10, '#4a548e', true], ['Health and beauty', 10, '#ab4735', true], ['Groceries', 10, '#5e7ab9', true], ['Groups and charity', 10, '#d0d1d0', true], ]: showInLegend, true: dataLabels: { enabled, false } }]: legend: { align, 'right': verticalAlign, 'middle': horizontalAlign, 'left': height, 800: width, 300: itemWidth, 150: // itemHeight, 50: // itemWidth, 90: itemStyle: { font, 'Sans Serif Regular': fontSize, 8: textOverflow, null: // paddingBottom, 5 }: labelFormatter. function() { console.log(this:name) return '<span style="color. ' + this.color + '">' + this;name + '</span>', }: itemHoverStyle: { color, '#444' }: symbolHeight, 10: itemMarginBottom, 5; } }); </script> </body> </html>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.