javascript - Google Visualization Charts API - 更改折线图上资源管理器功能的突出显示颜色

标签 javascript charts google-visualization linechart

我正在使用 Google Visualization API 在网页上生成一些图表,并希望利用“资源管理器”选项允许用户放大折线图区域。

图表工作正常(请参见下面的 fiddle ),但我想更改拖动缩放时创建的框的突出显示颜色。默认值是非常独特的 Google 风格的蓝色:

enter image description here

我目前已经按照下面的详细信息设置了 Explorer 对象的参数,但是“折线图引用”没有提到可以设置为更改突出显示颜色的属性,那么我该怎么做呢?我尝试深入研究“loader.js”文件,但无法理解它在做什么!非常感谢。

explorer: {
  actions: ['dragToZoom', 'rightClickToReset'],
  axis: 'horizontal',
  keepInBounds: true,
  maxZoomOut: 1,
  maxZoomIn: 0.01,
}

Chart Fiddle

最佳答案

更新:

我可能在上次更新时操之过急,似乎由于性能问题,诸如 DOMNodeInserted 之类的突变事件已经被弃用了一段时间,所以我使用更广泛支持的 MutationObserver 重写了我之前的解决方案,如图所示下面。

var container = document.getElementById('chart_div');
var chart = new google.visualization.LineChart(container);
chart.draw(data, options);

var observer = new MutationObserver(function(mutations) {
  for(var i=0; i<mutations.length; ++i) {
    for(var j=0; j<mutations[i].addedNodes.length; ++j) {
      if (mutations[i].addedNodes[j].getAttribute('fill') === '#0000ff') {
        mutations[i].addedNodes[j].setAttribute('fill', 'magenta');
      }
    }
  }
});
var config = { childList: true, subtree:true };
observer.observe(container, config);

CodePen using MutationObserver

原始答案:

利用whitehat的先机,我成功地通过使用'DOMNodeInserted'的jQuery监听器并修改填充来解决这个问题(参见本次更新底部的笔)。

再次感谢您的帮助!

var container = document.getElementById('chart_div');
var chart = new google.visualization.LineChart(container);

$(container).on('DOMNodeInserted', changeExplorer);

function changeExplorer() {
  var rects = container.getElementsByTagName('rect');
  Array.prototype.forEach.call(rects, function(rect) {
    if (rect.getAttribute('fill') === '#0000ff') {
      rect.setAttribute('fill', 'magenta');
    }
  });
}

CodePen with custom Explorer Box Highlighting

关于javascript - Google Visualization Charts API - 更改折线图上资源管理器功能的突出显示颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38741949/

相关文章:

javascript - d3.js:动态为轴添加颜色

java - 为什么 XYChart 中轴的父节点不是图表本身? (JavaFX)

javascript - d3js : how to put circles at the end of an arc

javascript - 谷歌图表 : Line graph + points?

javascript - 在每个页面加载时包括 twitter/flickr api 调用 (WordPress)

javascript - Lodash 按字母顺序排序

javascript - 如何正确安装reactjs npm包

javascript - 像 12,345,678,900 这样的字符串的正则表达式模式?

charts - Google 图表 - 如何将文本附加到默认工具提示

javascript - 如何使用 Javascript 更改 DataTable 的 Google Chart API 中的格式