【发布时间】:2014-06-21 06:16:34
【问题描述】:
我已经构建了一个 D3.js 条形图来比较几年的数据。 This is a demo。
根据 Mike Bostock 的 Let's Make a Bar Chart 教程,bar 的结构如下,一个 rect 和一个 text 元素(分别表示 bar 及其标签)嵌套在 g.bar 元素中,所有 g.bar在g.chart中举行。
<g class="chart" transform="translate(45,10)">
<g class="bar" transform="translate(0,0)">
<rect style="fill: rgb(117, 220, 205); stroke-width: 0.5; stroke: rgb(255, 255, 255);" height="2.0673635307781666" width="56.9547619047619" y="116.5993031358885">
<text class="total" y="111.5993031358885" x="28.47738095238095" text-anchor="middle" alignment-baseline="middle" style="stroke: none; fill: rgb(51, 51, 51); font-size: 0.5em; font-weight: bold; display: none;">60</text>
</g>
<g class="bar" transform="translate(0,0)">
<rect style="fill: rgb(117, 220, 205); stroke-width: 0.5; stroke: rgb(255, 255, 255);" height="2.0673635307781666" width="56.9547619047619" y="116.5993031358885">
<text class="total" y="111.5993031358885" x="28.47738095238095" text-anchor="middle" alignment-baseline="middle" style="stroke: none; fill: rgb(51, 51, 51); font-size: 0.5em; font-weight: bold; display: none;">60</text>
</g>
...
</g>
每个 g.bar 应该只有一个 rect 和一个嵌套在其中的文本元素。在测试我的图表时,我注意到一些退出似乎没有正确发生。您必须通过使用 Firebug 或 Chrome 开发工具检查 demo 来重现这一点,但是在更改一年或确实加载图表而不更改年份之后,每个 g.bar 包含多个 rect 和 text 元素。 我没有正确实现 enter() exit() remove() 模式吗?我怎样才能解决这个问题?谢谢!
【问题讨论】:
标签: javascript json d3.js transition bar-chart