我正在与Highcharts合作,遇到了一个我正在努力克服的问题。
我创建了一个jsfiddle,以便您可以看到我的问题:
http://jsfiddle.net/jo_pappi/0e5h8sts/3/ [A]
如你所见
我可以在highcharts中实现上述格式,因为此图表是基于动态数据进行渲染当单个组值到达时,highcharts会在条形图之间留下如此大的空间。我在这附加图像
代码
$('#container-one').highcharts({
chart: {
type: 'bar',
events: {
click: function (event) {
console.log(event.pageX + ',' + event.pageY);
}
}
},
credits: {
enabled: false
},
title: {
text: 'Total fruit consumtion, grouped by gender'
},
xAxis: {
categories: ['Apples', 'Oranges', 'Pears', 'Grapes', 'Bananas'],
minPadding: 1.1,
maxPadding: 1.1
},
yAxis: {
allowDecimals: false,
min: 0,
title: {
text: 'Number of fruits'
}
},
tooltip: {
enabled: false,
formatter: function () {
return '<b>' + this.x + '</b><br/>' + this.series.name + ': ' + this.y + '<br/>' +
'Total: ' + this.point.stackTotal;
}
},
plotOptions: {
// column: {
// stacking: 'normal'
// }
series: {
pointWidth: 20,
stacking: 'normal',
borderWidth: 0,
events: {
click: function (event) {
//reloadFlash();
//$('#report').html('click on yAxis title');
console.log(event.pageX + ',' + event.pageY);
}
}
}
},
series: [{
name: 'John',
color: 'rgba(89,89,89,1)',
data: [5], // data: [5, 3, 4, 7, 4],
stack: 'male',
pointPadding: -0.0,
pointPlacement: -0.0
}, {
name: 'Joe',
color: 'rgba(255,95,215,1)',
data: [3], // data: [3, 4, 4, 2, 2],
stack: 'male',
pointPadding: -0.0,
pointPlacement: -0.0
}, {
name: 'Jane',
color: 'rgba(217,116,0,1)',
data: [2], // data: [2, 5, 6, 2, 1],
stack: 'female',
pointPadding: -0.0,
pointPlacement: -0.0
}, {
name: 'Janet',
color: 'rgba(155,215,255,1)',
data: [3], // data: [3, 0, 4, 4, 3],
stack: 'female',
pointPadding: -0.0,
pointPlacement: -0.0
}]
});
如何减少条形之间的空间?
如果更改图表的高度是一个解决方案意味着我如何动态实现这一点?
答案 0 :(得分:2)
删除&#34; pointWidth&#34; 解决了条之间的空白区域。但我需要在所有可能的情况下,杆应该在相同的高度。我通过根据类别计数动态设置高度来解决问题。例如,如果我只有一个类别我已经将图表的高度设置为&#34; 210&#34;适用于2类&#34; 270&#34;像那样。并删除了pointWidth。
$('#container-one').highcharts({
chart: {
type: 'bar',
height: 210,
...
.
.
plotOptions: {
bar: {
pointPadding: 0,
borderWidth: 0
},
series: {
//pointWidth: 20,
stacking: 'normal',
.
.
});
当我有两个类别时,我将图表高度设置为 270
$('#container-two').highcharts({
chart: {
type: 'bar',
height: 270,
...
.
.
plotOptions: {
bar: {
pointPadding: 0,
borderWidth: 0
},
series: {
//pointWidth: 20,
stacking: 'normal',
.
.
});
可能是我做错了。但它解决了我的问题。如果我错了,请纠正我。
全部谢谢
答案 1 :(得分:1)
你在使用什么'pointWidth:20'?这就产生了问题..你还给出了类别:['苹果','橘子','梨子','葡萄','香蕉'] 即使这些数据仅适用于苹果..一个解决方案是动态生成类别..例如,如果数据只来自苹果推送类别数组中的苹果。之后你可以使用:
_chart.setSize(width,height)
动态设置高图的新高度和宽度的方法。同时删除 pointWidth 也可以解决问题......
答案 2 :(得分:0)
您可以使用的选项是:
plotOptions:{
bar:{
pointPadding: 0,
groupPadding: 0,
}
}
但你也需要强制你的条点宽度。
卸下:
series: {
pointWidth: 20,
API文档讨论了这些选项如何相互关联:
http://api.highcharts.com/highcharts#plotOptions.column.pointPadding