默认的高价图表高度= 400px。
如何根据图表轴及其尺寸为自动尺寸设置高度图?
请参阅下面的示例,导航栏位于音量面板上。
我知道我可以设置div的高度,但我有一个解决方案,可以在图表中动态插入/删除轴/系列,并且可以很好地自动生成高度图表。
该示例与Highchart网站的烛台/体积演示相同,但在div容器中没有高度属性。
// split the data set into ohlc and volume
var ohlc = [],
volume = [],
dataLength = data.length;
for (i = 0; i < dataLength; i++) {
ohlc.push([
data[i][0], // the date
data[i][1], // open
data[i][2], // high
data[i][3], // low
data[i][4] // close
]);
volume.push([
data[i][0], // the date
data[i][5] // the volume
])
}
// set the allowed units for data grouping
var groupingUnits = [[
'week', // unit name
[1] // allowed multiples
], [
'month',
[1, 2, 3, 4, 6]
]];
// create the chart
$('#container').highcharts('StockChart', {
rangeSelector: {
selected: 1
},
title: {
text: 'AAPL Historical'
},
yAxis: [{
title: {
text: 'OHLC'
},
height: 200,
lineWidth: 2
}, {
title: {
text: 'Volume'
},
top: 300,
height: 100,
offset: 0,
lineWidth: 2
}],
series: [{
type: 'candlestick',
name: 'AAPL',
data: ohlc,
dataGrouping: {
units: groupingUnits
}
}, {
type: 'column',
name: 'Volume',
data: volume,
yAxis: 1,
dataGrouping: {
units: groupingUnits
}
}]
});
});
});
问候。
答案 0 :(得分:1)
这是根据屏幕调整图表的一个示例。 http://jsfiddle.net/davide_vallicella/LuxFd/2/
只要不在HighCharts中设置height属性,只要在图表的包含元素上设置高度,它就会动态处理它。如果位置是绝对的,它可以是固定数字或甚至是百分比。
http://api.highcharts.com/highcharts/chart.height
默认情况下,高度是根据包含元素的偏移高度
计算的在此处找到示例: - http://jsfiddle.net/wkkAd/149/
#container {
width:100%;
height:100%;
position:absolute;
}
答案 1 :(得分:0)
Highcharts不支持动态高度,您可以通过$(window).resize
事件:
$(window).resize(function()
{
chart.setSize(
$(document).width(),
$(document).height()/2,
false
);
});
请参阅演示小提琴here。
答案 2 :(得分:0)
您可以使用chart.update方法动态设置chart.height。
http://api.highcharts.com/highcharts/Chart.update
function resizeChartFromValues (chart) {
const pixelsForValue = 10
const axis = chart.yAxis[0]
chart.update({ chart: { height: (axis.max - axis.min) * pixelsForValue } })
}
const options = {
chart: {
events: {
load () {resizeChartFromValues(this)}
}
},
series: [{
data: [30, 70, 100],
}]
}
const chart = Highcharts.chart('container', options)
setTimeout(() => {
chart.series[0].setData([10, 20, 30])
resizeChartFromValues(chart)
}, 1000)
答案 3 :(得分:0)
HTML
<div id="container">
<chart type="StockChart" [options]="stockValueOptions"></chart>
</div>
CSS
#container{
height: 90%;
}
TS
this.stockValueOptions = {
chart: {
renderTo: 'container'
},
yAxis: [{
height: '60%'
},{
top: '65%',
height: '35%'
}]
}
它的工作,而且很简单。删除yAxis的'%'中的图表高度添加高度。
答案 4 :(得分:0)
我遇到了同样的问题,并用以下方法解决了该问题:
<div id="container" style="width: 100%; height: 100%; position:absolute"></div>
图表上没有特殊选项。即使我调整图表的大小,它也非常适合浏览器。