首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >谷歌表格图表:如何根据列值更改行背景色

谷歌表格图表:如何根据列值更改行背景色
EN

Stack Overflow用户
提问于 2016-04-29 19:30:55
回答 2查看 8.9K关注 0票数 4

我正在使用谷歌表格图表显示一些数据作为一个表。根据行上的状态值,我必须更改行的背景色。所以我必须动态显示多种颜色。我查过表格文件,也在网上搜索过。但却找不到提供这样的功能。请帮帮忙。

EN

回答 2

Stack Overflow用户

发布于 2016-04-30 01:06:44

这里给你一些选择..。

  1. 使用ColorFormat格式化程序
  2. 在数据中添加您自己的html,提供 v:f:格式值 和 allowHtml: true 配置选项
  3. 修改'ready'事件上的表

参见下面的示例,其中使用了所有三个..。

代码语言:javascript
运行
复制
google.charts.load('current', {
  callback: function () {
    var data = new google.visualization.DataTable();
    data.addColumn('string', 'Department');
    data.addColumn('number', 'Revenues');
    data.addRows([
      ['Shoes', 10700],
      ['Sports', -15400],
      ['Toys', 12500],
      ['Electronics', -2100],
      ['Food', 22600],
      ['Art', 1100],
      [
        // add you own html
        {v: 'Web', f: '<div style="background-color: cyan;">Web</div>'},
        {v: 9999, f: '<div style="background-color: cyan;">9999</div>'}
      ]
    ]);

    var container = document.getElementById('table_div');
    var table = new google.visualization.Table(container);
    google.visualization.events.addListener(table, 'ready', function () {
      for (var i = 0; i < data.getNumberOfRows(); i++) {
        if (data.getValue(i, 1) === 1100) {
          // modify the table directly on 'ready'
          container.getElementsByTagName('TR')[i+1].style.backgroundColor = 'magenta';
        }
      }
    });

    // use formatter
    var formatter = new google.visualization.ColorFormat();
    formatter.addRange(-20000, 0, 'white', 'orange');
    formatter.addRange(20000, null, 'red', '#33ff33');
    formatter.format(data, 1); // Apply formatter to second column

    table.draw(data, {
      allowHtml: true
    });
  },
  packages: ['table']
});
代码语言:javascript
运行
复制
<script src="https://www.gstatic.com/charts/loader.js"></script>
<div id="table_div"></div>

票数 12
EN

Stack Overflow用户

发布于 2018-12-14 23:04:18

当将HTML与数据对象混合时,rowIndex可能不同步,并会编辑错误的行。在我的例子中,我使用了dashboard()bind()以及ChartWrapper() & ControlWrapper()来使用StringFilter,所以在呈现之前我避免了addListener()来更改HTML,而是修改了数据对象:

代码语言:javascript
运行
复制
for (var i = 0; i < data.getNumberOfRows(); i++) {
  if (data.getValue(i, 1) === 1100) {
    // change entire row
    data.setRowProperty(i, 'style', 'background-color:magenta;');
    // or change columns 0 & 1
    data.setProperty(i, 0, 'style', 'background-color:magenta;');
    data.setProperty(i, 1, 'style', 'background-color:magenta;');
  }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36946154

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档