2012-03-12 96 views
118

从谷歌图表

// Load the Visualization API and the piechart package. 
 
google.load('visualization', '1.0', {'packages':['corechart']}); 
 

 
// Set a callback to run when the Google Visualization API is loaded. 
 
google.setOnLoadCallback(drawChart); 
 

 
// Callback that creates and populates a data table, 
 
// instantiates the pie chart, passes in the data and 
 
// draws it. 
 
function drawChart() { 
 

 
    // Create the data table. 
 
    var data = new google.visualization.DataTable(); 
 
    data.addColumn('string', 'Topping'); 
 
    data.addColumn('number', 'Slices'); 
 

 
    var myData = { 
 
    'Mushrooms': 3, 
 
    'Onions': 1, 
 
    'Olives': 1, 
 
    'Zucchini': 1, 
 
    'Pepperoni': 2 
 
    }; 
 

 
    var rows = []; 
 
    for (element in myData) { 
 
     rows.push([element + " (" + myData[element] + ")", myData[element]]) 
 
    } 
 
    data.addRows(rows); 
 

 
    // Set chart options 
 
    var options = {'title':'How Much Pizza I Ate Last Night', 
 
       'width':450, 
 
       'height':300}; 
 

 
    // Instantiate and draw our chart, passing in some options. 
 
    var chart = new google.visualization.PieChart(document.getElementById('chart_div')); 
 
    chart.draw(data, options); 
 
}
<script type="text/javascript" src="https://www.google.com/jsapi"></script> 
 

 
<div id="chart_div"></div>

Example fiddle

如何删除填充或利润率在这个例子中删除填充或利润率?

+0

如果有人想右对齐,因为你有折线图左侧的测量值,'chartArea:{width:'70%',left:'30%'}'为我做了诡计。来源:https://code.google.com/p/google-visualization-api-issues/issues/detail?id=857#c5 – IsmailS 2014-11-21 06:53:10

回答

203

通过添加和调整API documentation中列出的某些配置选项,可以创建许多不同的样式。例如,here is a version,通过设置chartArea.width100%chartArea.height80%和移动去除大部分多余的空格的legend.position底部

// Set chart options 
var options = {'title': 'How Much Pizza I Ate Last Night', 
       'width': 350, 
       'height': 400, 
       'chartArea': {'width': '100%', 'height': '80%'}, 
       'legend': {'position': 'bottom'} 
    }; 

如果你想调整它更多,请尝试更改这些值或使用上面链接中的其他属性。

55

我已经很晚了,但是任何搜索此文件的用户都可以从中获得帮助。在选项内部,您可以传递一个名为chartArea的新参数。

 var options = { 
     chartArea:{left:10,top:20,width:"100%",height:"100%"} 
    }; 

左边和顶部的选项将定义左侧和顶部的填充量。希望这会有所帮助。

+0

chartArea.top为我的动态大小的div做了诀窍。谢谢。 – Blamkin86 2015-06-12 14:45:39

11

有这种可能性like Aman Virk mentioned

var options = { 
    chartArea:{left:10,top:20,width:"100%",height:"100%"} 
}; 

但是请记住,填充和保证金是不是有打扰你。 如果您可以在不同类型的图表(如ColumnChart和具有垂直列的图表)之间切换,那么您需要一些余量来显示这些行的标签。

如果您拿走了该保证金,那么您最终只会显示部分标签或根本没有标签。

所以,如果你只有一个图表类型,那么你可以像Arman说的那样改变边距和填充。但如果可以切换,不要改变它们。

36

我像大多数人一样来到这里,对这个同样的问题感到震惊,甚至没有答案甚至远程工作。

任何有兴趣,这里是实际的解决方案:

... //rest of options 
width: '100%', 
height: '350', 
chartArea:{ 
    left:5, 
    top: 20, 
    width: '100%', 
    height: '350', 
} 
... //rest of options 

这里的关键有什么做的“左”或“顶”的价值观。而是说:无论是图区域

尺寸设置,并设置为相同的值

作为一项修正案,我的答案。上述确实会解决“过度”的填充/空白/空白问题。但是,如果您希望包含轴标签和/或图例,则需要将图表区域的高度减小为略低于外部宽度/高度的宽度。这将“告诉”图表API有足够的空间显示这些属性。否则它会高兴地排除它们。

+5

这是正确的答案.... – 2015-05-29 01:11:53

+2

作为我的答案的修正案。这将确实解决“过度”填充/边距/空白问题。但是,如果您希望包含坐标轴标签和/或图例,则需要降低图表区域的高度和宽度,使其略低于外部宽度/高度。这将“告诉”图表API有足够的空间显示这些属性。否则它会高兴地排除它们。 – pimbrouwers 2015-05-29 13:03:44

+0

我认为其他解决方案不适合你的原因可能是他们认为图表被插入已经具有预设宽度和高度属性的DIV中,但你没有这样做。在HTML中预设高度和宽度是一个不错的主意,这样在图形被填充时页面的布局不会改变。这样可以防止页面加载时在页面上“跳跃”。 – 2016-03-30 17:08:57

10

它缺少在文档(我使用的版本43),但实际上你可以使用图表区的底部属性:

var options = { 
    chartArea:{ 
    left:10, 
    right:10, // !!! works !!! 
    bottom:20, // !!! works !!! 
    top:20, 
    width:"100%", 
    height:"100%" 
    } 
}; 

所以它可以使用全响应宽度为&高度,并防止裁剪任何轴标签或图例。

+0

能够正确使用绝对是一个很好的补充,但是在需要垂直轴数字的柱形图的情况下,当数值波动很多时会变得棘手 - 例如值范围从0 --100需要20像素左值,但0-10mil需要100像素,使用100像素则会留下相当大的余量,这是我认为我们所有人都试图摆脱的:)除非有是一个允许图表调整自己的缺失宽度的选项。关于如何能够解决这个问题的任何想法? – user3800174 2016-01-08 15:20:26

+0

看起来他们记录在2015年10月2日,这里: http://archive.is/lwbQY#selection-2997.0-3011.1 – 2016-03-31 22:06:28