【问题标题】:Google pie chart force rendering of "minor" labels outside the pie谷歌饼图强制渲染饼图外的“次要”标签
【发布时间】:2025-11-21 23:30:02
【问题描述】:

我已经研究了很多关于谷歌饼图和隐藏切片标签的信息,但没有找到任何切片外的标签,所以我希望除了alreadysuggestedon SO之外还有其他解决方案.

我生成了许多不同的图表类型,为了提高可读性,我自定义了饼图(doghnut),以便它们在切片之外显示它们的标签,并用线条连接。现在正如在其他问题中看到的那样,如果没有空间或者值太小,谷歌图表只会隐藏切片标签,这对我来说是不可接受的,为什么我想在应该有足够空间的地方显示它们。

即使将sliceVisibilityThreshold 设置为0,谷歌图表仍然不喜欢“次要”数据值并且只是不显示它们的标签,是否还有其他解决方案考虑到以下设置? (您应该会看到紫色切片的“Far”标签未呈现)

var chartData = {
    "options": {
      "legend": {
        "position": "none"
      },
      "pieHole": 0.5
    },
    "data": [
      [
        "Label 1",
        "Label 2"
      ],
      [
        "Foo",
        33059
      ],
      [
        "Bar",
        57893
      ],
      [
        "Baz",
        8135
      ],
      [
        "Boo",
        12211
      ],
      [
        "Far",
        3740
      ],
      [
        "Faz",
        7219
      ]
    ]
  },
  ctx = document.getElementById('canvas');

var onLoadGoogle = function() {
  var data = new google.visualization.arrayToDataTable(chartData.data);
  var chart = new google.visualization['PieChart'](ctx);
  var options = chartData.options;

  options.legend.position = 'labeled';
  options.pieSliceText = 'none';
  options.sliceVisibilityThreshold = 0;

  chart.draw(data, chartData.options);
}

window.google.load("visualization", "1.1", {
  packages: ["corechart"],
  callback: onLoadGoogle,
  nocss: true
});
#canvas {
  width: 600px;
  height: 300px;
}
<div id="canvas"></div>
<script src="https://www.google.com/jsapi"></script>

【问题讨论】:

  • 你找到解决办法了吗?
  • 不,一年前还没有解决方案,但我没有检查他们是否使用从未版本的插件修复它。
  • 仍未修复:(

标签: javascript charts google-visualization


【解决方案1】:

documentation for PieChart 中所述,pieStartAngle 选项有助于为某些标签腾出空间,但如果空间不足,则无能为力。这适用于切片内的默认标签和您正在使用的带标签的图例选项。

您还可以尝试使用pieSliceTextStylelegend.textStylefontSize 选项设置为较小的字体。

【讨论】:

  • 因此,除了我的“已经在 SO 上建议”链接之外,没有其他解决方案。就我而言,您更改 fontSize 的建议并不是真正可靠的解决方案,因为我动态生成了很多图表,而且我永远不知道如何调整大小以使其适用于所有图表。
  • 实际上,另一个想法是对您的项目进行不同的排序,因此它们最终会出现在有足够空间的地方,但由于您的数据是动态的,这会很困难。另外,你真的需要饼图吗?柱形图或条形图可以提供更好的用户体验,给予所有条形更平等的待遇。
  • 好吧,我无法控制使用什么图表,而且几乎不可能说服客户不使用饼图;)