Google CoreChart无法通过explorer选项实现缩放问题求助
解决Google Charts折线图Explorer缩放无效的问题
嘿,我知道你为啥缩放功能没生效了——问题出在你的x轴数据类型上!Google Charts的explorer缩放功能只支持连续型数据轴(比如数字、日期类型),但你现在把年份存成了字符串,属于离散的分类轴,自然没法触发缩放行为。
给你两个简单的解决方案,选一个就行:
方案1:把年份改成数字类型
直接把addColumn的类型从string改成number,同时去掉年份值的引号,让它们变成纯数字:
google.charts.load('current', {'packages':['corechart']}); google.charts.setOnLoadCallback(drawChart); function drawChart() { var data = new google.visualization.DataTable(); data.addColumn('number', 'Year'); // 这里改成number类型 data.addColumn('number', 'Value'); data.addRows([ [2001, 12],[2002, 15],[2003, 16], [2004, 12],[2005, 15],[2006, 19], [2007, 12],[2008, 25],[2009, 16], [2010, 22],[2011, 12],[2012, 13] ]); var options = { title: 'Price Chart', explorer: { actions: ['dragToZoom', 'rightClickToReset'], axis: 'horizontal', keepInBounds: true, maxZoomIn: 4.0 }, legend: { position: 'bottom' }, hAxis: { title: 'Year', format: '0' // 确保年份显示为整数格式 } }; var chart = new google.visualization.LineChart(document.getElementById('curve_chart')); chart.draw(data, options); }
方案2:把年份转换成日期类型
如果需要更严谨的时间轴,也可以把年份转成date类型,这样后续如果有更细粒度的时间数据也能兼容:
google.charts.load('current', {'packages':['corechart']}); google.charts.setOnLoadCallback(drawChart); function drawChart() { var data = new google.visualization.DataTable(); data.addColumn('date', 'Year'); // 改成date类型 data.addColumn('number', 'Value'); data.addRows([ [new Date(2001, 0), 12],[new Date(2002, 0), 15],[new Date(2003, 0), 16], [new Date(2004, 0), 12],[new Date(2005, 0), 15],[new Date(2006, 0), 19], [new Date(2007, 0), 12],[new Date(2008, 0), 25],[new Date(2009, 0), 16], [new Date(2010, 0), 22],[new Date(2011, 0), 12],[new Date(2012, 0), 13] ]); var options = { title: 'Price Chart', explorer: { actions: ['dragToZoom', 'rightClickToReset'], axis: 'horizontal', keepInBounds: true, maxZoomIn: 4.0 }, legend: { position: 'bottom' }, hAxis: { title: 'Year', format: 'yyyy' // 设置日期显示为四位年份 } }; var chart = new google.visualization.LineChart(document.getElementById('curve_chart')); chart.draw(data, options); }
另外补充一句:你代码里的div元素样式没问题,但要确保它的父容器有明确的高度(比如给body或父div设置height),不然图表可能显示不全,但这不是缩放失效的原因哦。
内容的提问来源于stack exchange,提问作者Alvaro
相关产品推荐
相关产品推荐

