【问题标题】:Google Charts Sankey - Node text styleGoogle Charts Sankey - 节点文本样式
【发布时间】:2016-11-05 06:12:39
【问题描述】:

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

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

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

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

【问题讨论】:

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


    【解决方案1】:

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

    但是颜色可以手动设置,绘制完图表后

    通常图表的'ready'事件可以用来知道图表何时完成绘制,
    但是,图表将在每个交互事件中恢复为默认的节点文本样式
    'onmouseover''onmouseout'、&'select'

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

    请参阅下面的工作 sn-p,它将颜色映射到每个 节点文本...

    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>

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-09-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-04-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多