如何使用 d3.js 为线条添加动画?

2023-12-19

所以我的线从图表的一侧延伸到另一侧,但它并没有真正通过每个数据点进行动画处理,我认为我必须在某处添加一个循环。

这是相关代码。任何帮助将不胜感激!

//assign start coordinates for each piece of data   
var startValueline = d3.svg.line()
    .x(0)
    .y(0);

//assigns coordinates for each piece of data    
var valueline = d3.svg.line()
    .interpolate("interpolation")
    .x(function(d) { return x(d.date); })
    .y(function(d) { return y(d.close); });

// csv callback function
d3.csv("myData2.csv", function(data) {
    data.forEach(function(d) {
    d.date = parseDate(d.date);
    d.close = +d.close;});


//CLIKC FUNCTION WHICH SHOULD ANIMATE LINE      
button.on("click", function() { 
    svg.append("path")                     // Add the valueline path. 
        .attr("class", "line")
        .attr("d", startValueline(data)) // set starting position
      .transition()
        .duration(2000)
        .ease("linear")
        .attr("d", valueline(data));    // set end position;
});


  //myData.csv STORED IN A SEPERATE .CSV FILE
  myData.csv
  date,close
  1-May-12,58.13
  30-Apr-12,53.98
  27-Apr-12,67.00
  26-Apr-12,89.70
  25-Apr-12,99.00
  24-Apr-12,130.28
  23-Apr-12,166.70
  20-Apr-12,234.98
  19-Apr-12,345.44
  18-Apr-12,443.34
  17-Apr-12,543.70
  16-Apr-12,580.13
  13-Apr-12,605.23
  12-Apr-12,622.77
  11-Apr-12,626.20
  10-Apr-12,628.44
  9-Apr-12,636.23
  5-Apr-12,633.68
  4-Apr-12,624.31
  3-Apr-12,629.32
  2-Apr-12,618.63
  30-Mar-12,599.55
  29-Mar-12,609.86
  28-Mar-12,617.62
  27-Mar-12,614.48
  26-Mar-12,606.98

See 如何在D3.js中平滑地绘制从起点到终点的路径 https://stackoverflow.com/questions/13893127/

你可以使用 hackstroke-dasharray。原则是虚线的一部分有颜色,另一部分没有颜色,这两部分的总和等于路径长度(也称为 100%)。

dashed value = ((vertical offset of the map - top of the map) / height of the map) * path length

See 这一页 https://source.opennews.org/en-US/articles/animating-maps-d3-and-topojson/ and 这个图片 http://cl.ly/012C3K3J1y0H/dynmaps_dasharray_percentage.svg

实际上,它变成了这样:

var totalLength = path.node().getTotalLength();

path
  .attr("stroke-dasharray", totalLength + " " + totalLength)
  .attr("stroke-dashoffset", totalLength)
  .transition()
    .duration(2000)
    .ease("linear")
    .attr("stroke-dashoffset", 0);

http://bl.ocks.org/4063326 http://bl.ocks.org/4063326

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="400px" height="300px">
    <style type="text/css">
        <![CDATA[
            text {
                font-size: 14px;
            }
            .back {
                stroke: #ccc;
                stroke-width: 1px;
                fill:none;
            }
            .front {
                stroke: #800;
                stroke-width: 3px;
                fill:none;
            }
        ]]>
    </style>
    <g transform="translate(10, 10)">
        <g>
            <path d="M0,30 L30,0 L60,30 S70,20 90,7 S120,10 120,30" class="back"></path>
            <path d="M0,30 L30,0 L60,30 S70,20 90,7 S120,10 120,30" class="front" style="stroke-dasharray: 57, 173;"></path>
            <text transform="translate(130, 20)">30% stroke-dasharray: 57, 173;</text>
        </g>
        <g transform="translate(0, 60)">
            <path d="M0,30 L30,0 L60,30 S70,20 90,7 S120,10 120,30" class="back"></path>
            <path d="M0,30 L30,0 L60,30 S70,20 90,7 S120,10 120,30" class="front" style="stroke-dasharray: 86.5, 173;"></path>
            <text transform="translate(130, 20)">50% stroke-dasharray: 86.5, 173;</text>
        </g>
        <g transform="translate(0, 120)">
            <path d="M0,30 L30,0 L60,30 S70,20 90,7 S120,10 120,30" class="back"></path>
            <path d="M0,30 L30,0 L60,30 S70,20 90,7 S120,10 120,30" class="front" style="stroke-dasharray: 173, 173;"></path>
            <text transform="translate(130, 20)">100% stroke-dasharray: 173, 173;</text>
        </g>
        <g transform="translate(0, 180)">
            <path d="M0,30 L30,0 L60,30 S70,20 90,7 S120,10 120,30" class="back"></path>
            <path d="M0,30 L30,0 L60,30 S70,20 90,7 S120,10 120,30" class="front" style="stroke-dasharray: 0, 173;">
                <animate
                    attributeName="stroke-dasharray"
                    from="0, 173" to="173, 173"
                    dur="3s"
                    repeatCount="indefinite"/>
            </path>
        </g>
    </g>
</svg>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用 d3.js 为线条添加动画? 的相关文章

  • d3 (v4) 树布局和打字稿:类型“HierarchyNode”上不存在属性“x”

    我正在尝试在使用时使用正确的 ts 类型d3 hierarchy具有树布局的根 例如 interface MyCustomGraphType id string children MyCustomGraphType let treeData
  • 动画后 SVG 路径发生变化

    我正在画一个
  • 如何判断一个点是否属于某条线?

    如何判断一个点是否属于某条线 如果可能的话 示例值得赞赏 在最简单的形式中 只需将坐标代入直线方程并检查是否相等 Given Point p X 4 Y 5 Line l Slope 1 YIntersect 1 代入 X 和 Y Y Sl
  • 如何在D3中导入json数据?

    如何在D3中导入json文件 I did d3 json temp json 但是我如何在进一步的代码中访问这个数据集呢 到目前为止我已经尝试过 var data d3 json temp json 但使用 data data 在其余代码中
  • Webpack 不包括 ProvidePlugins

    我正在开发一个小型试用 Web 应用程序 它使用 vue webpack 模板 https github com vuejs templates webpack https github com vuejs templates webpac
  • 如何在 d3.scale.ordinal() 中指定域?

    var W 100 var H 200 var data v 4 v 8 v 15 v 16 v 23 v 42 var x d3 scale linear domain 0 max x range 0 W var y d3 scale o
  • 在视图内调整 SVG 图像的大小

    我有一个 FloatingActionButton 其 SVG 图像绑定到它的 src 属性 但它没有显示我需要的尺寸 如何调整它的大小以显示更大的图像 这是我的画
  • NVD3/D3改变y轴最小值

    我目前正在使用 NVD3 制作一些折线图 我想知道是否可以使 y 轴刻度始终从 0 开始 目前它始终从最低的 y 值开始 我尝试过使用tickValues 但我不想更改其他值 我还尝试添加值为 0 的数据点 但这似乎是一种解决方法 它会影响
  • 使用 CSS 更改悬停时的 SVG 链接对象填充

    我的页面上有一个 SVG 对象链接 a href target blank gmail a 我正在尝试使用 SVG 文件中的以下代码更改悬停时的填充颜色 问题是 悬停效果仅在我删除
  • 如何在不违反 MVVM 的情况下绑定到不可绑定的属性?

    我在用SharpVector 的 SvgViewBox https sharpvectors codeplex com 显示静态资源图像 如下所示
  • 如何使用 d3.v4 中的 JSON 数据创建树布局 - 不使用 stratify()

    我正在尝试将一些 d3 代码从 v3 更新到版本 4 我有一个使用 JSON 数据的树形图 d3 v4 示例展示了如何使用 stratify 将表格数据 例如flare csv 转换为分层数据https bl ocks org mbosto
  • 创建响应式 SVG 剪辑路径 / 使 SVG 响应式

    我正在尝试使用创建响应式 SVG 剪辑路径
  • 如何在 vue.js 中使用 SVG.js 插件?

    我在用svg js在我的 Laravel 项目中运行vue js 这就是我使用的方式svg js Step 1 安装svg js作为我的 vue 应用程序中的插件 import svgJs from svg js dist svg expo
  • 如何获取 svgElement 的比例?

    我正在研究 svg div style width 300 height 300 div
  • 将元素添加到 D3 圆包节点

    我正在尝试制作一个可缩放的圆形包装图 我希望每个子圆圈包含一个较小的图表 该图表始终具有相同的结构 即 4 列 只有条形的高度会改变 我尝试添加一个简单的rect到目前为止我的图表 但矩形没有添加到圆圈中并且是静态的 JS var marg
  • 使用 jQuery 修改 svg 文件

    我有一个 svg 文件 其中包含一些形状和一些文本 我想在运行时修改 svg 以便某些形状可以更改颜色 某些文本可以更改其内容 假设我的外部 svg 文件中只有两个元素 圆圈 1 具有该 id 的蓝色实心圆圈 text1 包含该 id 的
  • 2 个 SVG 路径的交集

    我需要检查两个 SVG Path 元素是否相交 检查边界框与 getBBox 太不准确了 我目前正在做的是迭代两条路径 getTotalLength 然后检查是否有两个点 getPointAtLength 是平等的 下面是一个片段 但正如您
  • SVG 在 Firefox 中渲染得很糟糕

    我正在制作带有滑动轮播的信息图表 li 我认为 尽管 FF 中 SVG 的错误已得到解决 但 SVG 在 Firefox 中显示为像素化 有人能看到这个问题的解决办法吗 URL http weaver wp weavertest com r
  • 如何使用 Selenium webdriver 测试对 SVG 对象的点击?

    我正在尝试编写代码来检查单击 SVG 对象的功能 例如此 URL 上的美国州 http www amcharts com svg maps map usa 这可行 但是有更好的方法吗 不需要物理移动鼠标的东西 robert new Robo
  • d3.js 更新视觉效果

    我有一个与 d3 js 放在一起的树形图 我通过 getJSON 填充数据 效果很好 但是 我在 setInterval 方法中具有此功能 并且它似乎并没有刷新自身 var treemap d3 layout treemap padding

随机推荐

  • Bootstrap 4 垂直对齐文本不会在卡片上居中

    尝试垂直对齐以下卡片中的文本中心 div class row text center h 100 div class col md 3 text center my auto div class card card block justif
  • 如何提取嵌套的 JSON 数据?

    我正在尝试从 JSON 数据中获取值 我已经成功地深入到了 JSON 数据 几乎得到了我需要的东西 在 Python 中运行此命令 autoscaling name response Reservations 0 Instances 0 T
  • skel.js 框架/HTML5UP 模板 CSS 问题

    我是 skel js 框架的新手 遇到了一些问题 我从 HTML5UP net Zerofour 主题 下载了一个模板 并且已经为我的网站修改了所有内容 但是 CSS 没有在我的网站上正确显示无侧边栏 左侧边栏 pages 我包含以下链接
  • 用于提取部分文件路径的正则表达式

    我在 Impala 中使用正则表达式函数来查找文件路径中的文件夹名称 但它似乎没有给我正确的结果 我想从这个文件路径中解析出 一 this one path to hdfs 这是我使用的正则表达式 regexp extract filepa
  • 如何在 Angular 2 Webpack 中使用 WOW.js?

    我知道我们需要 wow js 的打字文件 但我在任何地方都找不到它 有没有其他解决方案可以将此外部js加载到webpack中 执行以下步骤 安装出口装载机 https www npmjs com package exports loader
  • 如何使用自定义比较器为三元组(“tuple”)声明/使用“unordered_set”?

    如何声明 使用unordered set对于三胞胎 tuple 使用自定义比较器 我需要存储三元组float 处理为tuple 在一组中检查潜在的重复项 因为它是关于float 我想使用常规比较 不起作用 因此需要自定义比较 这个最小的代码
  • 使用 Microsoft Web API 的 ODATA 真的是 REST 架构吗?

    我研究得越多ODATA 上的 Microsoft 框架 https www asp net web api overview odata support in aspnet web api我倾向于认为它不适合企业应用 该框架期望所有数据库都
  • 从app.js中减去代码

    为了解决一些与触摸相关的问题 我在 app js 中编写了一个脚本来重新打开并增强 EventDispatcher 该脚本相当长 并且污染了通常很干净的 app js 所以我想将我的脚本放在一个单独的文件中 然后以某种方式导入到 app j
  • 禁用 CallKit 中的“添加呼叫”选项

    有没有办法禁用添加呼叫选项Callkit当收到一个VoIP call 我找不到任何 api 来禁用此功能 但 WhatsApp 禁用了此功能 您需要同时设置supportsGrouping supportsUngrouping and su
  • 张量流“op”有什么作用?

    下面我创建了一个名为 optesting 的 tf 占位符 self center words tf placeholder tf int32 shape self batch size name op testing print Extr
  • 在 PHP 中检索 MySQL 全文搜索的匹配上下文(和安全性)

    我正在我的 MySQL 表 页面 上进行全文搜索 我正在显示与 标题 纯文本 VARCHAR 255 或 内容 html TEXT 中的关键字匹配的页面列表 当在 内容 字段中找到匹配项时 我想显示找到匹配项的代码片段 我不知道该怎么做 你
  • cntk中loss和metric是如何计算的

    我是 cntk 和 python 的新手 我创建了一个基于 TrainResNet CIFAR10 py 的 python 程序来训练 4736 个 64x64x3 图像并测试 4 个类别的 2180 个图像 训练 160 个 epoch
  • 为什么 TextInput 上的 onKeyPress 在 React Native (Android) 中不起作用?

    我正在使用 React Native 并在 Android 上进行测试 我已将 onKeyPress 添加到我的 TextInput 中 但我在模拟器中单击键盘并没有触发它 是的 我使用鼠标单击按键 有谁知道如何让 onKeyPress 工
  • 无法找到传入头 UIButton 的传出行头

    我仅在 iOS7 上因自动布局问题而崩溃 iOS8 有效 问题是 UIButton 指示 0x7b7780a0 不存在 当我查看recursiveDescription of the UIView 我该如何调查此事 从哪儿开始 edit 我
  • Bootstrap 轮播仅在第一张幻灯片中显示动画

    我的引导轮播有 4 张幻灯片 所有幻灯片都有动画图表 但动画仅在第一张幻灯片中可见 如何确保其余 3 张幻灯片的图表动画也能看到 Code
  • 如何通过uploadcare中的rest api删除文件

    我正在尝试使用 jquery ajax 删除 uploadcare Rest api 中的文件 这是我当前的 jquery 代码 ajax url http api uploadcare com files photoguid val ty
  • ASP.NET 5添加WCF服务参考

    在 Visual Studio 2015 预览版 预发行版 中 如何添加服务引用WCF服务 目前 这是一个相当复杂的过程 因为该工具似乎不太支持生成 WCF 客户端代码或从配置文件自动映射的方式 另外 正如 dotnetstep 指出的那样
  • 如何更改默认版权模板

    每当我在 xcode 中创建一个新文件时 它都会在文件顶部放置类似的内容 Copyright MyCompanyName 2008 All rights reserved 我怎样才能把它变成有用的东西 Update 在这里找到了答案 htt
  • 是否可以在 R Shiny 中动态设置小部件选项?

    作为一个最小的工作示例 An app with a datatable whose pagination option we can toggle with a button library shiny runApp list ui bas
  • 如何使用 d3.js 为线条添加动画?

    所以我的线从图表的一侧延伸到另一侧 但它并没有真正通过每个数据点进行动画处理 我认为我必须在某处添加一个循环 这是相关代码 任何帮助将不胜感激 assign start coordinates for each piece of data