【问题标题】:Extreme zoom-in in d3 graph causes area (or line) graph to disappeard3 图形中的极端放大导致区域(或线)图消失
【发布时间】:2018-06-13 10:54:55
【问题描述】:

我尝试使用 d3 的缩放功能,但如果我放大得太远,我的图表会不断消失。

有关示例,请参阅 https://bl.ocks.org/everhardt/3d6b9e127669c59251234f4c7f157fe2。如果您放大到约 13 分钟或更短的可见域,您会看到面积图将消失。缩小到一定程度会再次出现。

我使用折线图而不是面积图得到了类似的结果。

这是什么原因造成的?轴正在正确渲染。如果我查看原始 SVG,我看不到任何奇怪的行为。是否存在舍入误差?

顺便说一句,我的要点是 Mike Bostock 的 https://bl.ocks.org/mbostock/431a331294d2b5ddd33f947cf4c81319 的一个分支。我只将最大比例因子设置为 Infinity(scaleExtent

【问题讨论】:

    标签: d3.js


    【解决方案1】:

    这可能是因为数据无法支持更高的缩放级别。或者它可能会尝试和估计它,但只能到此为止。例如如果您放大以使您的 x 轴仅显示小时(没有值),则无法显示图表信息。

    您可以通过在数据中添加小时、分钟和秒列然后查看可以放大多远来证明这一点。

    为了获得更好的用户体验,最好将 scaleExtent 保持在不会搞砸的范围内。

    【讨论】:

    • 我不确定:CSV 中的月+年被解析为日期(使用d3.timeParse),因此精确到毫秒。
    • 顺便说一句,我同意您关于限制 scaleExtent 的评论。问题是我想创建一个可以放大约 5 秒域的图表,但这是行不通的。我现在所做的是,如果我将 CSV 更改为仅包含 2010 年 1 月和 2010 年 2 月的数据点,我可以进一步放大。绘图的尺寸可能有限制吗?当放大很远时,图的(不可见部分)变得很宽..
    • 我创建了这个plnkr.co/edit/fNvTNsys1gTOzq9mfpY1?p=preview,它在显示屏上具有缩放和平移功能。我已经对它进行了一次调整,但看不到任何真正的相关性 - 根据您启动缩放的位置,它似乎会在不同的点消失。
    • 谢谢,确实:我也没有。我刚刚也在 GitHub 上发布了这个问题,请参阅 github.com/d3/d3-shape/issues/111
    【解决方案2】:

    这是浏览器限制,请参阅https://github.com/d3/d3-shape/issues/111

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-02-02
      • 2012-03-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多