【问题标题】:d3 liquid chart bugs - clipping path jarringd3 液体图表错误 - 剪切路径不和谐
【发布时间】:2017-09-11 09:00:00
【问题描述】:

我正在尝试稳定这个 d3js 液体矩形形状代码。我正在用不同的尺寸对其进行测试,但配置并没有保持 - 就像它总是被移位一样。

-- 这个变体在矩形/圆形仪表之间有一个切换 http://jsfiddle.net/0ht35rpb/132/

此调整已相应地配置了剪切路径

fillGroup.append("rect")
    .attr("x", config.width - 5 + config.margin)
    .attr("y", config.margin)
    .attr("width", config.width - 2 * config.margin)
    .attr("height", config.height - 2 * config.margin)

// 壶0

http://jsfiddle.net/0ht35rpb/151/

// 壶 1

http://jsfiddle.net/0ht35rpb/154

// Jug 2 - 剪辑开始跳跃

http://jsfiddle.net/0ht35rpb/155

// 壶3 - 剪裁跳跃更明显

http://jsfiddle.net/0ht35rpb/156

【问题讨论】:

  • -- 我已经将容器和波浪放在单独的 g 元素中 - 从宽度 70 到 90 看起来很稳定 - 但除此之外它开始破裂.. jsfiddle.net/0ht35rpb/165

标签: javascript d3.js


【解决方案1】:

您需要进行 2 项更改以稳定此示例 (jsfiddle.net/0ht35rpb/156):

1) 将waveGroupXPosition 设置为等于- config.width- config.width/2

2) 更改您的 animateWave() 函数以将路径的变换属性从 (0,0) 转换为 (config.width, 0)。该函数应如下所示:

function animateWave() {
    wave.attr('transform','translate(0,0)');
    wave.transition()
        .duration(config.waveAnimateTime)
        .ease(d3.easeLinear)
        .attr('transform',`translate(${config.width},0)`)
        .on('end', animateWave);
}

您可以在此处查看更新版本:http://jsfiddle.net/xpb0hsey/

【讨论】:

  • 太好了@JusMalcolm - 是什么导致了不和谐的剪辑错误 - 动画转换错误? -- 现在在不同的长度上似乎很稳定——玻璃或游泳池变体——有没有其他方法可以改进代码库。 -- 我遇到的另一个问题是让底部的axisText 换行 -- jsfiddle.net/0ht35rpb/132
  • 造成削波的原因是平移转换并不总是转换到波周期完成的 X 值。我认为这是因为它依赖于 waveAnimateScale(),它依赖于 fillCircle/fillCircleMargin..etc,最终可能不会为 translate() 生成一个波宽度的倍数的值。此外,waveXPosition 正在确定波浪的偏移量,因此它需要直接取决于路径宽度/配置宽度,这样当您将波浪转换为 0 或 config.width 时,它不会显示间隙。
  • @Rob 不,我没有听说过那个网站。很高兴我能帮上忙
  • 干杯人 - 请继续关注更多疯狂的实验可视化。
  • Yo @JusMalcolm - 发现了一个错误——如果他们的值是 90 就可以了——jsfiddle.net/xpb0hsey/1 但高于这个数字就像 99 一样糟糕——图表填满然后分流——@ 987654325@
猜你喜欢
  • 2016-09-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-08-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多