Google图表将缩放图像保存为PNG

时间:2015-02-03 09:27:17

标签: javascript charts google-visualization png

我使用Google Charts创建折线图,我正在使用

explorer: {actions: ['dragToZoom', 'rightClickToReset'] 

允许用户放大边界框。我希望能够将缩放的图像保存为PNG。为此,我尝试在图表的左右边缘找到HAxis值,并在图表的顶部和底部边缘找到VAxis值:

var cli = chart.getChartLayoutInterface();
var hl = cli.getHAxisValue(cli.getChartAreaBoundingBox().left);
var hr = cli.getHAxisValue(cli.getChartAreaBoundingBox().left + cli.getChartAreaBoundingBox().width);
var vt = cli.getVAxisValue(cli.getChartAreaBoundingBox().top);
var vb = ??

然后我在我的选项中使用这些来重新绘制具有这些限制的图表:

var options = {
    width: 1430,
    height: 563,
    hAxis: {
        title: 'X-Axis',
        viewWindow: { min: hl, max: hr}
    },
    explorer: {actions: ['dragToZoom', 'rightClickToReset'], keepInBounds: true, maxZoomIn: .01 },
    curveType: "function",
    vAxis: {
        logScale: log1, 
        title: "Y-Axis", 
        titleTextStyle: {color: '#0000FF'}, 
        textStyle: {color: '#0000FF'}, 
        baselineColor: '#0000FF', 
        viewWindow: { min: vb, max: vt}}
    },
    title: "Figure 1"
};

var chart = new google.visualization.LineChart(document.getElementById('plot'));
chart.draw(data, options);
drawpng = chart.getImageURI();
return drawpng;

左边,右边和上边缘的值正常,但我无法弄清楚如何确定底边。我已经尝试了

var vb = cli.getVAxisValue(cli.getChartAreaBoundingBox().top - cli.getChartAreaBoundingBox().height)

var vb = cli.getVAxisValue(cli.getChartAreaBoundingBox().height)

var vb = cli.getVAxisValue(cli.getChartAreaBoundingBox().height - cli.getChartAreaBoundingBox().top)

但这些都没有给我正确的价值。

是否有人知道如何使这项工作,或另一种保存放大图表的方法? 谢谢!

1 个答案:

答案 0 :(得分:0)

我使用

开始工作
cli.getVAxisValue(cli.getChartAreaBoundingBox().top+cli.getChartAreaBoundingBox().height)

我没有意识到这个位置是从顶部计算的,而不是从底部计算的。