Highchart - 窗口大小调整后重新绘制图表

7

我的网页中有一个使用Highchart绘制的图表。现在,如果我调整整个窗口的大小,我希望这个图表能够自动调整其大小(特别是宽度)。代码类似于以下内容:

window.onresize=function(){resized();}

function resized()
{
   $("#container").highcharts().redraw();
}

如果我覆盖重绘事件(例如使用“alert(“resized”);”),那么该方法应该被调用-但是图表不会改变其大小。 我还尝试使用手动设置图表大小

$("#container").highcharts().setSize(width, height, false);

但是这两种方法都没有起作用。是否还有其他解决方案?

2
你为什么在setSize中设置redraw=false?如果你在setSize之后不重新绘制图表,那么你就看不到效果了。无论如何,jsFiddle演示将是很好的。总的来说,它应该可以正常工作。 - Paweł Fus
1
嗯,是的...这解决了我的问题...真的很尴尬 :) 谢谢 - Philipp
阅读了http://api.highcharts.com/highcharts#Chart.setSize之后,第三个参数是true还是false并不重要(仅为了性能考虑)。 - Philipp
好的,如果您能创建一个带有该问题的演示,我会检查一下 :) - Paweł Fus
好的,但问题在哪里?我不确定...请参见:http://jsfiddle.net/LLExL/2633/ - Paweł Fus
显示剩余2条评论
1个回答

2
您是否尝试过以这种方式编写代码,使其可以自动处理窗口调整大小时的图表大小调整。
 // create the chart
var chart = Highcharts.chart('container', {
chart: {
    events: {
        redraw: function () {
            var label = this.renderer.label('The chart was just redrawn', 100, 120)
                .attr({
                    fill: Highcharts.getOptions().colors[0],
                    padding: 10,
                    r: 5,
                    zIndex: 8
                })
                .css({
                    color: '#FFFFFF'
                })
                .add();

            setTimeout(function () {
                label.fadeOut();
            }, 1000);
        }
    }
},
xAxis: {
    categories: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec']
},

series: [{
    data: [29.9, 71.5, 106.4, 129.2, 144.0, 176.0, 135.6, 148.5, 216.4, 194.1, 95.6, 54.4]
}]
});

1
感谢您的贡献,但我的问题已经有4年了 - 所以我无法正确记起我的初始问题。尽管如此,您的答案可能会帮助其他人。 - Philipp

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接