在 d3.js 中绘制滚动/移动平均值

2024-03-22

寻找一种在 d3 中绘制滚动/移动平均值的方法,而无需提前操作数据。所以我想通过对每个数据点及其后面的两个数据点进行平均来平滑这条线。我的代码是这样的

var data = [3, 66, 2, 76, 5, 20, 1, 3, 8, 90, 2, 5, 70];

var w = 20,
    h = 80;

var x = d3.scale.linear()
    .domain([0, 1])
    .range([0, w]);
var y = d3.scale.linear()
    .domain([0, 100])
    .rangeRound([h, 0]);

var chart = d3.select("body").append("svg")
    .attr("class", "chart")
    .attr("width", w * data.length -1)
    .attr("height", h);

var line = d3.svg.line()
    .x(function(d,i) { return x(i); })
    .y(function(d) { return y(d); })


var movingAverageLine = d3.svg.line()
    .x(function(d,i) { return x(i); })
    .y(function(d) { return y(d); })

chart.append("svg:path").attr("d", line(data));
chart.append("svg:path").attr("d", movingAverageLine(data));

我可以指定 movingAverageLine 来计算以下数据点的平均值吗?我想不出在该函数中访问它们的方法。

我在 jsfiddle 上设置了一个示例。http://jsfiddle.net/tjjjohnson/XXFrg/2/#run http://jsfiddle.net/tjjjohnson/XXFrg/2/#run


先前的解决方案导致累计移动平均线。

我修改了小提琴 http://jsfiddle.net/plmrry/ktLtN/由制成约翰·奥康纳 https://stackoverflow.com/users/2255689/john-oconnor提供一个n-移动平均线 http://mathworld.wolfram.com/MovingAverage.html通过将自定义插值函数传递给d3.svg.line():

movingAvg = function(n) {
    return function (points) {
        points = points.map(function(each, index, array) {
            var to = index + n - 1;
            var subSeq, sum;
            if (to < points.length) {
                subSeq = array.slice(index, to + 1);
                sum = subSeq.reduce(function(a,b) { 
                    return [a[0] + b[0], a[1] + b[1]]; 
                });
                return sum.map(function(each) { return each / n; });
            }
            return undefined;
        });
        points = points.filter(function(each) { return typeof each !== 'undefined' })
        // Note that one could re-interpolate the points 
        // to form a basis curve (I think...)
        return points.join("L");
    }
}
var movingAverageLine = d3.svg.line()
    .x(function(d,i) { return x(i); })
    .y(function(d,i) { return y(d); })
    .interpolate(movingAvg(6));
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 d3.js 中绘制滚动/移动平均值 的相关文章

  • jQuery mobile 中的文本区域高度和宽度?

    我修复了 jQuery mobile 中文本区域元素的高度 并且在纵向中得到了完美的高度和宽度 但在横向中宽度没有放大 谁能帮我 提前致谢 HTML
  • 如何删除除任何特定 id 之外的元素

    假设有一个父 id 其中包含许多元素 我想删除除一个元素之外的所有元素 ex parent id children not id n remove
  • 在特定页面上执行 javascript 的正确“Rails”方式

    我试图在特定页面上运行 javascript 而我唯一的解决方案似乎是反模式 我有controller js内部生成的assets javascripts 我在用着gem jquery turbolinks 我的代码类似于以下内容 docu
  • 从函数返回函数的目的是什么?

    阅读一些遗留代码 发现 A prototype setSize function var v1 new Vector2 return function size var halfSize v1 copy size multiplyScala
  • 如何在没有 jQuery 的情况下删除 Javascript 中的元素

    我试图通过以下方式从 DOM 中删除 Div a 标签嵌套在其中 我想我正在寻找的是 jQuery 的纯 Javascript 版本 div remove 这是html设置 div a href Click me to remove the
  • 如何在React Native Android中获取响应头?

    您好 我想在获取 POST 请求后获取响应标头 我尝试调试看看里面有什么response with console log response 我可以从以下位置获取响应机构responseData但我不知道如何获取标题 我想同时获得标题和正文
  • 按下回车键时不刷新页面

    我遇到了一些问题 只要表单中有输入 回车键就会触发页面刷新 下面的代码 如果按下回车并且文本区域 input 中没有输入任何文本 则不会刷新页面 但是如果按下回车并且 input中有输入或者光标位于文本区域 我不确定是什么触发了它 因为 s
  • javascript 选择自定义光标 (svg)

    我正在动态地将光标更改为悬停时的本地 svg element on mouseover function this css cursor url svgs pointer svg 9 30 auto 工作正常 但我想选择该 svg 来操纵其
  • React autoFocus 将光标设置为输入值的开头

    我有一个受控输入 最初显示一个值 我已将该输入设置为自动聚焦 但当我希望它出现在末尾时 光标出现在输入的开头 我知道这可能是因为自动对焦是在值之前添加的 但我不能 100 确定 在输入字段末尾完成光标初始化的最佳方法是什么 var Test
  • React Router v4 不渲染组件

    React Router v4 渲染组件存在问题 在应用程序初始加载时 它将呈现与 URL 相对应的正确组件 但是 任何后续的组件Link单击不会呈现所需的组件 图书馆 反应路由器 4 2 2 https reacttraining com
  • onclick 事件中未调用函数

    我想在每个 YouTube 链接的末尾添加一些 HTML 以在 litebox 中打开播放器 到目前为止 这是我的代码 document ready function var valid url new RegExp youtube com
  • LeafleteachLayer函数不会迭代所有Layer

    使用 GeoJSON 数据数组创建一些标记 getJSON GetLocationsServlet function data L geoJSON data onEachFeature onEachFeature addTo mymap G
  • JavaScript eval("{}") 返回行为?

    根据ECMA 262 规范 http www ecma international org publications files ECMA ST Ecma 262 pdf 以下语句返回1 eval 1 eval 1 eval 1 var a
  • Vaadin 12 将对象传递给 JavaScript 函数:无法对类进行编码

    Vaadin 12 Kotlin 项目 In my myPage html我有JavaScript myObject redirectToCheckout sessionId 1111 2222 所以我需要调用javaScript函数red
  • 使用javascript动态更新css内容

    需要将 css 更新为动态值 我不确定最好的方法是什么 div style zoom 1 div 缩放级别将根据窗口大小调整触发 应用程序将相应缩放 我将此应用程序加载到 cordova 中并让它在 iPAD 中运行 然后我意识到需要使用
  • Rails 3.1+ 的 Jasmine 与 Mocha JavaScript 测试 [已关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 我对茉莉花有经验并且非常喜欢它 有谁有 Jasmine 和 Mocha 的经验 特别是 Rails 的经验吗 我想知道是否值得转用 我已经在 J
  • 使用 next.js 进行服务器端渲染与传统 SSR

    我非常习惯 SSR 意味着页面得到完全刷新并从服务器接收完整 HTML 的方法 其中根据后端堆栈使用 razor pub other 进行渲染 因此 每次用户单击导航链接时 它只会向服务器发送请求 整个页面将刷新 接收新的 HTML 这就是
  • react-native - 图像需要来自 JSON 的本地路径

    你好社区 我正在react native中开发一个测试应用程序 并尝试从本地存储位置获取图像 我实际在做什么 我将图像直接链接源提供给 var 并在渲染函数中调用此方法 react 0 14 8 react native 0 23 1 np
  • 在 iOS 7 Safari 中,如何区分通过边缘滑动与后退/前进按钮的 popstate 事件?

    在 iOS 7 Safari 中 现在有两种后退 前进导航方式 使用底部的传统后退 前进按钮箭头或从屏幕边缘滑动 我正在使用动画在 ajax 应用程序中的页面之间进行转换 但如果用户通过边缘滑动进行导航 我不想触发该转换 因为这本身就是一个
  • 滚动顶部不符合预期

    Note 由于上次忘记奖励而重新开放赏金 A Woff 大师已经给出答案 我想在用户展开某一行时到达该行 这样当最后一个可见行展开时 用户不必向下滚动即可查看内容 I used example tbody on click td green

随机推荐

  • 当我滑动时,slideChangeStart 事件不会触发

    在我的 Ionic 1 3 1 应用程序中 我使用ion slides显示调查问卷部分的组件
  • 当用户在 HTML 文本输入上键入退格键时,如何避免向后导航?

    退格键是浏览器热键 用于 返回到最后一页 我知道当输入获得焦点时 该热键将被禁用 但是我有 keyup 和 keydown 事件绑定到这个输入 而我写的一些东西导致了这个问题 你知道解决办法吗 当您处理了来自输入元素的事件后 请在返回之前取
  • Plotly:在 R 中的每帧中对可变数量的轨迹进行动画处理

    我想对一组帧进行动画处理 其中每个帧可能具有不同数量的轨迹 如 此处 所述1 https community plotly com t animating a variable number of traces in each frame
  • QPainter::drawPixmap() 看起来不好看而且质量低?

    我正在尝试在 a 内绘制一个图标 png QWidget with QPainter drawPixmap QPixmap source png painter setRenderHint QPainter HighQualityAntia
  • 带offline.html 备份页面的Service Worker

    我无法显示offline html 页面 我不断得到The FetchEvent for https my domain com resulted in a network error response a redirected respo
  • 开源 .Net Jabber/XMPP 服务器? [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我在 Net 中见过不少 XMPP 客户端的例子 也见过不少不同语言的服务器 但我正在寻找 Net 版本
  • 单个进程中的多个应用程序域

    大家好 我想问大家一个与应用程序域相关的问题 在 Net中 appdomain充当安全边界 两个应用程序可以在同一进程内的两个不同域中运行 但是当我尝试运行一个exe的多个实例时 它显示在任务管理器中的不同进程中 为什么会这样呢 为什么它不
  • 使用正则表达式在 javascript 中进行全词搜索

    我正在尝试使用以下正则表达式在 javascript 中执行整个单词搜索 str Test String C S example var regex search new RegExp b search string b g if str
  • MOVDQA 和 MOVAPS x86 指令之间的区别?

    我正在查找英特尔数据表 英特尔 64 和 IA 32 架构 软件开发人员手册我找不到两者之间的区别 MOVDQA 移动对齐的双四字 MOVAPS 移动对齐压缩单精度 在英特尔数据表中我可以找到这两条指令 该指令可用于从 128 位加载 XM
  • 从 .Net Core 使用 JAR

    如何使用 Net Core 内的 JAR 显然是用 Java 开发的 在 Net世界中 我们可以将其注册为COM组件并访问它 我知道 Net Core 还不支持 COM 组件 IKVM JNBridge 等库尚不支持 Net Core CO
  • Serilog 不将日志发送到 Elasticsearch 8

    I used ELK堆栈来记录应用程序错误 但是Serilog不登录弹性搜索 使用的elasticsearch版本是8 3 2 登录配置program cs builder UseSerilog hostBuilder servicePro
  • VSTS 中 .NET Core 项目的代码覆盖率和测试结果

    如何在 VSTS 中启用 NET Core 项目的代码覆盖率和测试结果 目前 尚未为 NET Core 测试任务启用它 这是一个答案的一半 因为我不喜欢代码覆盖率 首先得到dotnet test通过传递参数来输出包含测试结果的 trx 文件
  • 如何在 razor MVC asp.net 中组合两个视图模型

    假设我有一些模型如下 public class Model1 public int ID get set public string Name get set public class Model2 public int ID get se
  • 是否可以将现有的 Windows Phone 8 应用程序更新到 Windows Phone Store 8.1

    我在 Windows Phone 应用商店中有一个 Windows Phone 8 0 应用程序 我想将我的应用程序更新到 Windows Phone 商店 API 而不是 Windows Phone Silverlight 8 1 以准备
  • liferay 7 中 liferay-portlet.xml 的等效文件是什么?

    我想在 liferay 7 中添加自定义用户通知 为此 如果我使用 liferay 6 2 我必须输入类似用户通知定义 and 用户通知处理程序类在 liferay portlet xml 中 但在liferay中我想问一下把这些条目放在哪
  • 如何从 Amazon Kinesis 流获取最新记录?

    我想从 Amazon Kinesis 流中获取最新记录 我打算从该记录中提取时间戳 并将其与消费者应用程序检查点的最后一个记录的时间戳进行比较 以检查消费者是否落后 我无法使用最新的分片迭代器类型 这是因为 LATEST 指向最近的记录之后
  • Richfaces modalPanel 使用 Ajax 加载

    我在我的项目中使用了 richfaces 特别是标签 rich modalPanel 它允许在页面中显示弹出窗口 为此 我添加了这样的弹出窗口
  • 如何将 reCAPTCHA 设为必填字段?

    我正在使用 Google reCAPTCHA 并且能够将 CAPTCHA 组件添加到表单内的页面中 但是当我提交表单时 没有进行验证来检查验证码是否已解决 提交表单时如何验证验证码组件已被解析 或者 换句话说 如何使我的验证码组件成为必需的
  • NestJS,如何以及在哪里构建响应 DTO

    我一直在使用Java Spring框架来开发微服务 最近 我开始探索 NestJS 并有一个关于构建响应 DTO 的问题 在春天 控制器是轻量级的 它们将调用交给服务层 服务层实现业务逻辑 最后 它们调用负责构建响应 DTO 的 Mappe
  • 在 d3.js 中绘制滚动/移动平均值

    寻找一种在 d3 中绘制滚动 移动平均值的方法 而无需提前操作数据 所以我想通过对每个数据点及其后面的两个数据点进行平均来平滑这条线 我的代码是这样的 var data 3 66 2 76 5 20 1 3 8 90 2 5 70 var