【问题标题】:ColumnChart google visualization column color changeColumnChart google 可视化列颜色变化
【发布时间】:2010-03-09 14:32:33
【问题描述】:

有谁知道我是否可以以某种方式破解 google 的可视化 ColumnChart api 图表,以使单个列以不同的颜色突出,如下所示:

我知道你可以用 ImageChart 做到这一点,所以我不需要它(它不会触发任何事件并且没有 x/y 标签)。

如果真的用 SVG 渲染,我可以用 javascript 以某种方式遍历结果并更改 CSS 样式吗?

【问题讨论】:

    标签: javascript svg google-visualization


    【解决方案1】:

    一个非常便宜的hack(效果很好)如下:

    在图表的选项中,执行:isStacked(true);

    现在以两个单独的系列传递数据:一个在除颜色偏色的条形之外处处为零,另一个仅在颜色偏色的条形处为零。 “堆叠”的条形只会产生您在屏幕截图中发布的效果。

    【讨论】:

    • 这听起来是个不错的解决方案。我希望这样的事情存在!事实上,这听起来不像我正在做的“黑客”。我试试看。
    • 实际上是“isStacked”而不是 setStacked。
    • 是的,确实如此——我实际上是在使用 GWT 的 google 可视化包装器,它调用了 setStacked 函数。去图...
    • 这个选项对我来说比调整 DOM 效果更好,因为鼠标悬停后颜色会恢复为原始颜色。谢谢。
    【解决方案2】:

    使用 jQuery,我能够访问我的 iframe 以获取图表。它不漂亮,但它有效。它也比使用原型更短:

    $('#google-chart iframe').contents().find("#chartArea g>g>rect")[2].attributes['5'].value = "#eea746";                                         
    

    上面代码中的attributes['5']指的是rect对象的“fill”属性。

    【讨论】:

    • 但是将鼠标悬停在它上面,它会被重置为蓝色。
    【解决方案3】:

    如果你想确定的话,你可以遍历结果(它通过它的外观生成内联的 svg 片段),只需打开你最喜欢的 Web 调试工具(opera Dragonfly、firebug 或 webkit Web 检查器)看看它的样子。

    我猜只使用 API 使一个条具有不同的颜色可能会更简单,但如果您想遍历树并为其分配一些样式,应该可以正常工作。您可以使用标准的 DOM core 方法来遍历树,就像在 HTML 中一样,例如 firstChild, nextSibling, parentNode

    【讨论】:

    • 嗯。除了图表在 iframe 中,我的 javascript 无法访问它。 (我正在使用原型)
    • 你只需要找到iframe然后获取iframe.contentDocument就可以得到iframe引用的文档,那么你应该可以在svg中做你想做的事情了。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-11-01
    • 2018-07-12
    • 2017-12-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多