自动图表高度

时间:2013-04-04 17:08:06

标签: highcharts highstock

默认的高价图表高度= 400px。

如何根据图表轴及其尺寸为自动尺寸设置高度图?

请参阅下面的示例,导航栏位于音量面板上。

http://jsfiddle.net/BYNsJ/

我知道我可以设置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
            }
        }]
    });
    });
});

问候。

5 个答案:

答案 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)

实例:https://jsfiddle.net/a97fgsmc/

答案 3 :(得分:0)

嘿我正在使用angular 2+和highchart / highstock v.5,我认为它也适用于JS或jQuery,这里是一个简单的解决方案

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>

图表上没有特殊选项。即使我调整图表的大小,它也非常适合浏览器。