You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Google饼图切片中添加%符号(CodeIgniter环境)

Google饼图切片显示%符号解决方案

问题背景

基于CodeIgniter开发的Google饼图,点击主饼图切片可弹出子饼图展示S1-S4数值,需要在主/子饼图的切片数值旁显示%符号。此前尝试在MySQL查询中拼接%符号,数据库查询结果正常但饼图无法显示。

原因分析

Google Charts的number类型列仅识别纯数值,若传入带%的字符串会被判定为无效数据,导致饼图渲染失败。因此不能在后端拼接%,需保留数值类型,通过前端自定义格式化实现符号显示。

解决步骤

1. 主饼图添加%符号

修改主饼图的配置选项,使用pieSliceTextFunction自定义切片显示文本:

function drawChartISLA(updatedDataISLA) {
  // 创建数据表(原有代码不变)
  var data = new google.visualization.DataTable();
  data.addColumn('string', 'opco_name');
  data.addColumn('number', 'count');
  data.addColumn('number', 's1_sla_met_count');
  data.addColumn('number', 's2_sla_met_count');
  data.addColumn('number', 's3_sla_met_count');
  data.addColumn('number', 's4_sla_met_count');
  data.addRows(updatedDataISLA);

  // 修改主饼图配置
  var options = {
    'title': 'Incidents SLA met percentage - ',
    // 自定义切片文本,在数值后添加%
    pieSliceText: function(value) {
      return value + '%';
    },
    is3D: true,
    'tooltip': {
      trigger: 'none'
    }
  };

  // 实例化并绘制图表(原有代码不变)
  var chart = new google.visualization.PieChart(document.getElementById('IR-SLA'));
  chart.draw(data, options);
  // ... 后续事件监听代码不变
}

2. 子饼图添加%符号

在切片选择的selectHandler函数中,修改子饼图的配置:

function selectHandler() {
  // 获取选中切片数据(原有代码不变)
  var selection = chart.getSelection()[0];
  if (selection) {
    var sliceName = data.getValue(selection.row, 0);
    var sliceS1 = data.getValue(selection.row, 2);
    var sliceS2 = data.getValue(selection.row, 3);
    var sliceS3 = data.getValue(selection.row, 4);
    var sliceS4 = data.getValue(selection.row, 5);

    // 创建子饼图表数据(原有代码不变)
    var sliceData = new google.visualization.DataTable();
    sliceData.addColumn('string', 'Severity');
    sliceData.addColumn('number', 'Incident Count');
    sliceData.addRow(['S1', sliceS1]);
    sliceData.addRow(['S2', sliceS2]);
    sliceData.addRow(['S3', sliceS3]);
    sliceData.addRow(['S4', sliceS4]);

    // 修改子饼图配置
    var sliceOptions = {
      'title': sliceName + ' SLA met percentage - ',
      // 自定义切片文本
      pieSliceText: function(value) {
        return value + '%';
      },
      'width': 500,
      'height': 300,
      is3D: true,
      'tooltip': {
        // Tooltip也显示%符号
        'text': function(value) {
          return value + '%';
        }
      }
    };

    // 弹出窗口并绘制子饼图(原有代码不变)
    var popup = window.open('', 'myPopup', 'width=600,height=400');
    popup.document.write('<div style="margin:auto" id="slice_chart_div"></div>');
    centerPopup(popup);
    var sliceChart = new google.visualization.PieChart(popup.document.getElementById('slice_chart_div'));
    sliceChart.draw(sliceData, sliceOptions);
  }
}

3. 后端代码无需修改

保持原有MySQL查询和数据返回逻辑,无需拼接%符号,确保返回的是纯数值类型,保证饼图比例计算正确。

效果说明

修改后,主饼图和子饼图的切片数值旁都会显示%符号,同时饼图的比例计算不受影响,渲染正常。

内容的提问来源于stack exchange,提问作者Yashas

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.19 14:42:20