我试图使我的渲染图表填充100%的父div而没有成功。有什么方法可以消除左右两侧的间隙吗?
var chart = new Highcharts.Chart({
chart: {
renderTo: 'chart',
margin: 0,
width: 300,
height: 200,
defaultSeriesType: 'areaspline'
},
series: [{
data: [33,4,15,6,7,8, 73,2, 33,4,25],
marker: {
enabled: false
}
}]
});
答案 0 :(得分:12)
如果您删除width: 300, height: 200
选项,请执行以下操作:
var chart = new Highcharts.Chart({
chart: {
renderTo: 'chart',
margin: 0,
defaultSeriesType: 'areaspline'
},
...
它将自动填充容器。
答案 1 :(得分:10)
问题是因为jquery UI。渲染图表后,请调用此代码以重排图表。这解决了我的问题
chart.reflow();
答案 2 :(得分:6)
将minPadding
和maxPadding
设为0,请参阅:http://jsfiddle.net/sKV9d/3/
答案 3 :(得分:5)
试试这个:
var height= $("#container").height();
var width= $("#container").width();
var chart = new Highcharts.Chart({
chart: {
renderTo: 'chart',
margin: 0,
width: width,
height: height,
defaultSeriesType: 'areaspline'
},
series: [{
data: [33,4,15,6,7,8, 73,2, 33,4,25],
marker: {
enabled: false
}
}]
});
答案 4 :(得分:5)
我通过
解决了这个问题window.dispatchEvent(new Event('resize'));
UPD:
2a上。另一种方法是 - 如果在"设计"期间无法定义容器尺寸。时间你可以在图表加载后重排图表(即调用chart.reflow();):
chart: {
events: {
load: function(event) {
**event.target.reflow();**
}
}
},
答案 5 :(得分:1)
如果您未向图表提供width
属性,则应自动获取容器的宽度。
所以只需从图表中删除宽度并给出容器width: 100%
,这应该可以。
如果您想要特定宽度,只需将容器宽度更改为特定尺寸即可。图表仍然应该是该尺寸的100%。 JSFiddle
示例:
HTML
<div id="container">
<div id="chart"></div>
</div>
JS
var chart = new Highcharts.Chart({
chart: {
renderTo: 'chart',
margin: 0,
height: 200,
defaultSeriesType: 'areaspline'
},
series: [{
data: [33,4,15,6,7,8, 73,2, 33,4,25],
marker: {
enabled: false
}
}]
});
CSS
#container {
width: 100%;
height: 200px;
}
答案 6 :(得分:0)
使用updateChart函数并在该函数内部调用chart.reflow()
scope.updatechart = function(){
scope.chart.reflow();
}
使用任何刷新机制每30秒调用一次updatechart方法
答案 7 :(得分:0)
只需添加CSS
.highcharts-container{
width: 100% !important;
}
.highcharts-root{
width: 100% !important;
}
答案 8 :(得分:0)
Highcharts问题已报告here。 为了解决这个问题,我们可以做上面提到的事情。 我也遇到了同样的问题,所以我已经使用
解决了window.dispatchEvent(new Event('resize'));
在渲染我的图表后:
this.chartData={
... //some required data object to render chart
}
Highcharts.stockChart('divContainerID', this.chartData, function (chart) {});
window.dispatchEvent(new Event('resize'));
答案 9 :(得分:0)
我对其进行了测试,并且效果很好:
chart-tab是div,并且包含高图表div,因此您首先需要定义两个DIV,第一个用于包含chart('chart-container')
,第二个是“ chart-container”的容器,即“ chart-tab” ',那么一个库必须是added('resizesensor')
才能添加'chart-tab'DIV on-change事件,这里的功能如下:
new ResizeSensor($('#chart-tab'), function(){ if(chart){ var wid = document.getElementById('chart-tab').clientWidth; var hei = document.getElementById('chart-tab').clientWidth; chart.update({ chart: { width: wid, height: hei } }); } });
答案 10 :(得分:0)
您可以在项目的任何地方使用chart.update函数。
Highcharts.charts.forEach(function (chart) {
chart.update({ chart: { width: some value } }, true, true, true);
})
答案 11 :(得分:0)
在我的情况下,这是一个加载问题,导致图表容器过窄。如果您使用jQuery,请按以下方式加载图表
$(document).ready(function() {
let chart = Highcharts.stockChart('chart-container', {
[...]
}
}