javascript - Google Charts Sankey - 节点文本样式

标签 javascript charts google-visualization data-visualization sankey-diagram

有没有办法改变谷歌桑基图中具有样式角色的目标节点文本的颜色?目前我的数据设置如下:

[Source, Target, Label, Style] 
[A,B,"Test Label", "#ffffff"]

我可以更改节点和链接的颜色,但不能更改文本。

d3 在这一点上对我来说不是一个选择,整个想法是对节点进行动画处理,使其在其位置上一个接一个地出现 - 因此尝试更改样式并重新绘制图表。增长表不起作用,因为节点改变了位置。有什么想法吗?

最佳答案

无法找到使用标准选项设置单个节点文本样式的方法

但颜色可以在绘制图表后手动设置

通常情况下,图表的'ready'事件可用于了解图表何时完成绘制,
但是,图表将在每个交互事件上恢复为默认节点文本样式
例如 'onmouseover''onmouseout''select'

相反,使用突变观察器来更改任何交互上的节点文本

请参阅以下工作片段,它将颜色映射到每个节点文本...

google.charts.load('current', {'packages':['sankey']});
google.charts.setOnLoadCallback(drawChart);

function drawChart() {
  var data = new google.visualization.DataTable();
  data.addColumn('string', 'From');
  data.addColumn('string', 'To');
  data.addColumn('number', 'Weight');
  data.addRows([
    ['A', 'X', 5],
    ['A', 'Y', 7],
    ['A', 'Z', 6],
    ['B', 'X', 2],
    ['B', 'Y', 9],
    ['B', 'Z', 4]
  ]);

  var options = {
    width: 600
  };

  var colorMap = {
    'A': 'cyan',
    'X': 'magenta',
    'Y': 'yellow',
    'Z': 'lime',
    'B': 'violet'
  };

  var chartDiv = document.getElementById('sankey_basic');
  var chart = new google.visualization.Sankey(chartDiv);

  var observer = new MutationObserver(function (mutations) {
    mutations.forEach(function (mutation) {
      mutation.addedNodes.forEach(function (node) {
        if (node.tagName === 'text') {
          node.setAttribute('font-size', '20');
          node.setAttribute('fill', colorMap[node.innerHTML]);
        }
      });
    });
  });
  observer.observe(chartDiv, {
    childList: true,
    subtree: true
  });

  chart.draw(data, options);
}
<script src="https://www.gstatic.com/charts/loader.js"></script>
<div id="sankey_basic"></div>

关于javascript - Google Charts Sankey - 节点文本样式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40435332/

相关文章:

javascript - 如何在 browserify 中要求代码镜像的模式、主题或插件

javascript - Protractor - 如何从中继器而不是元素获取实际值?

javascript - 饼图中值较小的 Google 可视化问题

sql - 数据库查询以生成基于时间的图表

java - Google Chart Tool Api 是否可以免费使用

javascript - Google 图表导出为图像

javascript - onSubmit 方法在使用 Firebase 的 React 中执行渲染

javascript - 过滤器不适用于 AngularStrap bs-select 和 ng-options

javascript - 在 highchart 中,Y 轴绘图线标签被 chop

javascript - 如何在谷歌图表中应用格式的简单方法