从Google图表中删除填充或边距


151

// 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>

小提琴的例子

在此示例中,如何删除填充或边距?


如果有人因为线形图的左侧有度量值而想要对正chartArea: {width: '70%', left: '30%'},请帮我解决这个问题。来源:code.google.com/p/google-visualization-api-issues/issues/...
IsmailS

Answers:


246

通过添加和调整API文档中列出的一些配置选项,您可以创建许多不同的样式。举例来说,这里是一个版本,能够消除设置额外的空白的最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'}
    };

如果要进一步调整,请尝试更改这些值或使用上面的链接中的其他属性。


78

我来晚了,但是任何搜索此内容的用户都可以从中获得帮助。在选项内,您可以传递一个称为chartArea的新参数。

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

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


chartArea.top为我的动态尺寸div带来了成功。谢谢。
Blamkin86

60

我像大多数遇到同样问题的人一样来到这里,但令我震惊的是,没有一个答案甚至遥不可及。

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

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

此处的键与“ left”或“ top”值无关。而是:

图表图表区域的尺寸均已设置并设置为“相同值”

作为对我的回答的修正。以上确实可以解决“过多”的填充/边距/空白问题。但是,如果您希望包括轴标签和/或图例,则需要减小图表区域的高度和宽度,以使其略低于外部宽度/高度。这将“告诉”图表API足够的空间来显示这些属性。否则,它将很乐意将它们排除在外。


2
作为对我的回答的修正。这确实将解决“过多”的填充/边距/空白问题。但是,如果您希望包括轴标签和/或图例,则需要减小图表区域的高度和宽度,以使其略低于外部宽度/高度。这将“告诉”图表API足够的空间来显示这些属性。否则,它将很乐意将它们排除在外。
pimbrouwers

1
我认为其他解决方案对您不起作用的原因可能是他们认为图表已插入DIV中,该DIV已经具有预设的width和height属性,但您没有这样做。最好在HTML中预设高度和宽度,以使在填充图形时页面的布局不会改变。这样可以防止页面加载时东西“跳来跳去”。
戴夫·伯顿

@戴夫感谢您的建议,但我不一定同意。在很多情况下,您只是根本不知道这些值是什么。似乎至少有15个人觉得我的服务足够了。
pimbrouwers

1
我同意,皮姆。如果您事先不知道宽度和/或高度(也许是因为您希望页面自适应地调整),则无法在DIV中预设宽度和/或高度。我只是指出为什么我认为其他答案中给出的解决方案对他们有用,但对您不起作用,以及如果可以的话,为什么在DIV中预设宽度和高度是个好主意。
戴夫·伯顿

1
由于@DaveBurton指出的原因,如果使用CSS Grid(我是),这可能是正确的答案
Stephen R

14

在文档中丢失了(我使用的是版本43),但实际上您可以使用图表区域的rightbottom属性:

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

因此可以使用完整的响应宽度和高度,并防止裁剪任何轴标签或图例。


能够正确使用绝对是一个不错的选择,但是对于需要垂直轴数字的柱形图,当值波动很大时(例如,值范围从0开始的图表),它将变得棘手。 100将需要20像素的左值,但0-10密耳将需要100像素,而使用100像素则将留下相当大的余量,这是我认为我们所有人都试图摆脱的:)除非存在一个允许图表调整自己缺少的宽度的选项。关于如何解决这一问题的任何想法?
user3800174'1

好像他们在2015年10月2日在此处记录了该文件: archive.is/lwbQY#selection-2997.0-3011.1
Dave Burton

13

就像提到的Aman Virk一样有这种可能性:

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

但是请记住,填充和边距不会困扰您。如果您可以在不同类型的图表(例如ColumnChart和带有垂直列的图表)之间进行切换,则需要一定的边距来显示这些线的标签。

如果您取消该边距,则最终将只显示部分标签,或者根本不显示标签。

因此,如果您只有一种图表类型,则可以像Arman所说的那样更改边距和填充。但是,如果可以切换,请不要更改它们。


11

有一个专门为此主题

options: {
  theme: 'maximized'
}

来自Google图表文档:

当前只有一个主题可用:

'最大化'-最大化图表区域,并在图表区域内绘制图例和所有标签。设置以下选项:

chartArea: {width: '100%', height: '100%'},
legend: {position: 'in'},
titlePosition: 'in', axisTitlesPosition: 'in',
hAxis: {textPosition: 'in'}, vAxis: {textPosition: 'in'}

这似乎是最好的选择。设置主题后:“最大化”,仍然可以调的外观,如高度:“90%”,textPosition:‘出’,等等
吉日克里兹
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.