d3:仅线性插值足够接近的点

2023-12-04

假设我有一个具有相应日期的值数组,[{date: d1, value: v1}, ..., {date: dn, value: vn}],我想使用 d3.js 进行可视化。只要后续测量在一定的时间范围内,例如相隔不超过一周,我就很高兴在测量之间插入 d3。

但是,当后续记录相距较远时,我不希望 d3 连接它们。实现这一目标的最简单方法是什么?


你的问题并不完全清楚:通过“插值”,我相信你的意思是“连接点”。

如果您对 x 轴使用时间刻度,D3 将自动为您连接点并创建一条线(SVGpath元素),无论数据点的时间间隔如何。但是有一种方法可以在该行中制造“间隙”:使用line.defined()。根据API:

如果指定了定义,则将定义的访问器设置为指定的函数或布尔值并返回此行生成器。

问题是,要使这种方法发挥作用,您必须设置一个给定值(比方说,null)在您的数据集中,在您不想划线的日期之间(即,不划线的日期)足够接近,正如您在问题中所说)。您可以手动或使用函数来执行此操作。

这是一个有效的演示:在我的数据集中,我的数据从 10 月 7 日跳到 10 月 17 日(超过 1 周)。所以,我刚刚创建了一个null这两个日期之间的任何日期的值(在我的演示中,10 月 16 日)。然后,在行生成器中,行跳转到此null值,使用defined:

d3.line().defined(function(d){return d.value != null;})

结果是该行从 7-Oct 跳到 17-Oct:

var data = [{date: "1-Oct-16",value: 14},
{date: "2-Oct-16",value: 33},
{date: "3-Oct-16",value: 12},
{date: "4-Oct-16",value: 43},
{date: "5-Oct-16",value: 54},
{date: "6-Oct-16",value: 71},
{date: "7-Oct-16",value: 32},
{date: "16-Oct-16",value: null},
{date: "17-Oct-16",value: 54},
{date: "18-Oct-16",value: 14},
{date: "19-Oct-16",value: 34},
{date: "20-Oct-16",value: 32},
{date: "21-Oct-16",value: 56},
{date: "22-Oct-16",value: 24},
{date: "23-Oct-16",value: 42},
{date: "24-Oct-16",value: 52},
{date: "25-Oct-16",value: 66},
{date: "26-Oct-16",value: 34},
{date: "27-Oct-16",value: 62},
{date: "28-Oct-16",value: 48},
{date: "29-Oct-16",value: 51},
{date: "30-Oct-16",value: 42}];

var parseDate = d3.timeParse("%d-%b-%y");

data.forEach(function (d) {
    d.date = parseDate(d.date);
});

var svg = d3.select("body")
    .append("svg")
    .attr("width", 500)
    .attr("height", 200);
		
var xScale = d3.scaleTime().range([20, 480]);
var yScale = d3.scaleLinear().range([180, 10]);

xScale.domain(d3.extent(data, function (d) {
    return d.date;
    }));
yScale.domain([0, d3.max(data, function (d) {
    return d.value;
    })]);

var xAxis = d3.axisBottom(xScale).tickFormat(d3.timeFormat("%d"));

var yAxis = d3.axisLeft(yScale);

var baseline = d3.line()
	  .defined(function(d){return d.value != null;})
    .x(function (d) {
      return xScale(d.date);
    })
    .y(function (d) {
      return yScale(d.value);
    });
		
svg.append("path") // Add the valueline path.
.attr("d", baseline(data))
.attr("fill", "none")
.attr("stroke", "teal");

svg.append("g")
    .attr("transform", "translate(0,180)")
    .call(xAxis);

svg.append("g")
.attr("transform", "translate(20,0)")
.attr("class", "y axis")
    .call(yAxis);
<script src="https://d3js.org/d3.v4.min.js"></script>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

d3:仅线性插值足够接近的点 的相关文章

  • Jquery - 如何替换div中的一个单词?

    我有一个从其他位置复制的 div 我需要更改其中的一个单词 这是 HTML div class dealer addy 8726 N Royal Ln br Irving TX 75063 br email protected cdn cg
  • 在 AngularJS 和 Nodejs 之间共享代码

    使用在前端和后端之间共享代码的最佳方式是什么javascript 特别是说之间nodejs and angularjs 问题是我们使用的是相同的enums and constant values例如error codes在后端和前端 现在
  • 如何使用 angular2 在客户端生成 rsa 密钥对?

    我需要知道如何使用 angular2 在客户端生成 rsa 密钥对 我需要生成私钥 公钥对并将私钥保存到数据库中 并希望在客户端内使用公钥 我怎样才能实现这个 我找到了这个https www npmjs com package genera
  • 在一定时间后自动更改 Firestore 中的字段值 [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 I m working on Javascript and here s how s my data looks like 我想要的功
  • 是的验证;同一字段可以接受不同类型吗?

    我对是的很陌生 我试图验证字段可以是遵循某个正则表达式的字符串 也可以是此类字符串的数组 这是检查字符串与我的正则表达式匹配的工作示例 field yup string matches regex 现在我想要field如果它有一个这样的字符
  • 错误:捆绑失败:TypeError:无法读取未定义的属性“transformFile”,React Native

    每当我运行react native start时 我都会收到此错误 但是最近在我在节点模块中安装了firebase tools和stripe之后 这种情况开始发生 但在此之前它会运行得很好 这也是错误的堆栈跟踪 ffff 127 0 0 1
  • EXT JS中有全局变量吗

    在 java 和 C 中 我们可以全局存储变量并从项目中的任何位置访问它的值 比如说 我在一个名为Residence我正在保存residenceNumber这是一个INT到一个名为的全局变量houseNumberGlobalVariable
  • 切换 Ag-Grid 中的浮动过滤器?

    我试图通过开关或按钮单击来确定浮动过滤器的显示 看起来很简单 我应该能够在 true 和 false 之间切换 将该值提供给网格选项中的浮动过滤器 然后刷新标题 对吗 不幸的是 网格似乎总是落后一步 当我第一次点击时 什么也没有发生 当我将
  • 使用 javascript 和 jQuery UI datepicker 获取工作日数

    我有两个日期选择器 我可以从中计算天数 而无需计算星期六和星期日 但我想在周五和周六这样做 我尝试过一些不同的方法但失败了 对我来说 处理不包括周六和周日的天数很容易 但处理周五和周六的天数则不然 以下是我的 javascript 代码 f
  • Angularjs 使用 ng-init 为 ng-model 赋值

    您好 我有以下问题 看起来很简单并且应该有效 但事实并非如此 在我的代码中我输入了
  • 按周将对象数组拆分为组

    我有一个包含这样的数据的对象数组 date 01 01 2017 00 00 00 dataField1 dataField2 date 01 02 2017 00 00 00 dataField1 dataField2 date 01 1
  • 在浏览器开发工具中看不到SignalR流量

    我构建了使用 SignalR 的服务器和客户端代码 该网站运行完美 但我无法在任何浏览器 chrome IE Firefox 中看到网络流量 我知道网络流量在那里 因为该网站正在运行 有没有办法在浏览器中查看 SignalR 流量 如果不是
  • 如何在Javascript中保存zip文件的二进制数据?

    我从 AJAX 响应中收到以下响应 这是 zip 文件的响应 请让我知道如何在 Javascript 中保存此 filename zip ZIP 里面有 PDF 文件 我的代码是这样的 ajax url baseURLDownload se
  • Firebase 停止监听 onAuthStateChanged

    从版本 3 0 0 开始 我很难删除身份验证状态更改侦听器 要根据文档启动侦听器 firebase auth onAuthStateChanged function user handle it 但是 我在文档中找不到任何涉及删除身份验证状
  • 使用预先存在的数据库创建 PhoneGap iOS 应用程序

    我最近开始开发一个使用 PhoneGap 版本 2 8 0 作为药物查找器的应用程序 过去 我创建了该工具的 Web 版本 它使用 jQuery Mobile 和 PHP 来访问远程 SQL 数据库 PhoneGap 似乎是一个很有吸引力的
  • Firefox 本地主机上的 Twilio 屏幕共享?

    目前 Firefox 中本地主机上的屏幕共享会引发以下错误 The request is not allowed by the user agent or the platform in the current context 这是我的代码
  • 未捕获的类型错误:无法分配给只读属性

    我正在尝试 Nicholas Zakas 所著的 Professional JavaScript for Web Developers 一书中的这个非常简单的示例 但我不知道我在这里做错了什么 我错过了一些非常简单的事情 但我被困住了 这是
  • 事件监听器如何/何时附加到 d3.js 中?

    我正在尝试制作一个 SVG 编辑器 长话短说 我需要将鼠标事件附加到
  • Jquery 脉动改变颜色或图像

    我正在尝试使用 jquery 脉动代码让 div 改变颜色 但我希望它从红色变为黑色 但我听说要做到这一点 你必须下载某个插件 所以我希望它脉动为图片 到目前为止我有这两个代码 img src 36 gif alt width 105 he
  • 如何防止外部 CSS 添加和覆盖 ReactJS 组件样式

    我有一个自定义的 ReactJS 组件 我想以某种方式设置样式 并将其作为插件提供给许多不同的网站 但是 当网站使用全局样式 Twitter bootstrap 或其他 css 框架 时 它会添加并覆盖我的组件的样式 例如 全局 css l

随机推荐

  • 使用索引向量重新排序向量[重复]

    这个问题在这里已经有答案了 我想对向量中的项目重新排序 使用另一个向量来指定顺序 char A a b c size t ORDER 1 0 2 vector
  • 从 android 活动返回值到片段

    我有片段 F 它调用活动 A 在活动 A 中按下按钮 B 时 活动必须将选定的数组列表值返回到片段 F 并完成活动 A 这可能吗 我从 Activity 知道您可以发送意图如下的数据 Bundle bundle new Bundle bun
  • GORM 阻止为域创建外键约束

    我正在 Grails 中开发一个基于 Web 的应用程序 我遇到过一种情况 我想尝试禁止 GORM 在表中的字段上创建外键约束 我有一个域类 它是类层次结构的一部分 域类本质上充当到目标域的链接 目标域可以是不同的类型 并且该链接域的每个子
  • 如何在新选项卡/窗口中打开每个 WordPress 帖子?

    我有一个wordpress博客的主页显示 10 篇最新帖子的列表 现在 每当我单击任何帖子标题时 都会在同一选项卡中打开一个新帖子 但在这里我想让它在新选项卡中打开 那么 我该怎么做呢 Wordpress 中的每个主题都有不同的模板 尝试寻
  • Unity3D 将 json 发布到 ASP.NET MVC 4 Web Api

    如何将 json 值发布到 ASP NET MVC 4 Web Api 控制器 我尝试了几种方法 但无法使其发挥作用 首先 我简化了控制器操作 HttpPost public Interaction Post Interaction fil
  • qt中是否有范围为(0,0)的圆形QProgressbar?

    我希望有circular QProgressbar它的外观必须看起来像正常的QProgressbar范围在 0 到 0 之间 线性代数的代码QProgressbar是像下面这样的东西 QProgressBar progressBar new
  • std::map 的用途是什么?

    谁能解释我从这个简单程序中得到的输出std map 请注意 我插入p进入地图 但没有q但它说它找到了它们 而且还说地图中只有 1 个元素 include
  • GeoViews:将 matplotlib 样式参数应用于多边形元素

    已安装的软件包 Holoviews 1 14 4 geoviews 1 9 1 matplotlib 3 4 2 我正在尝试做什么 我正在尝试使用简单的每个功能样式GeoViews和绘图库后端 我不知道如何应用不同的edgecolor 参数
  • 如何使用矢量化代码求解许多超定线性方程组?

    我需要求解线性方程组 Lx b 其中 x 始终是向量 3x1 数组 L 是 Nx3 数组 b 是 Nx1 向量 N 通常范围从 4 到 10 左右 使用以下方法解决这个问题没有问题 scipy linalg lstsq L b 然而 我需要
  • 是否可以使用 div 作为 Twitter Popover 的内容

    我正在使用 twitter 的 bootstrap 弹出窗口here 现在 当我滚动弹出窗口文本时 会出现一个弹出窗口 其中仅包含来自 a s data content属性 我想知道是否有办法放一个 div 在弹出窗口内 潜在地 我想在那里
  • 如何指示网络浏览器不缓存页面?

    我的 Internet Explorer 6 0 遇到缓存问题 我想指示浏览器not缓存他请求的页面 更多信息 在我的页面中 有一个随机令牌 可以防止重新加载网站并发布相同的信息两次或更多次 如果您现在将此页面添加为书签 则每次浏览器请求时
  • Python的break函数在true时不会结束

    为什么中断不会在 true 时结束并返回到开始处 while True print This is a quiz print What is your name Name input print Hello Name The quiz wi
  • JTextArea 只能包含数字,但允许负值

    我有一个 JTextArea 只需要接受数字 这是我的代码 DocumentFilter onlyNumberFilter new AxisJTextFilter final JTextArea areaTextoXMin new JTex
  • 在 C++ 中读取 Fortran 二进制文件

    读取 使用 C 程序 由 Fortran 代码生成的二进制文件的问题已被多次询问 并且已经给出了 Fortran 记录中约定的令人满意的描述 例如http local wasp uwa edu au pbourke dataformats
  • 在 CI 中加载页眉和页脚视图

    有没有办法在不调用的情况下加载视图 页眉 页脚 this gt load gt view header or this gt load gt view footer 在每个控制器中 也许是一个可以在每个视图中使用的模板 以下是一些帮助您入门
  • SSL 主机名匹配如何在 JWS 上工作?

    当使用 Android 版 Google SafetyNet 时 文档建议您 验证 SSL 证书链并使用 SSL 主机名匹配 确保叶子认证是问题attest android com 现在这是如何运作的 我假设我收到 JWS 消息检查证书和签
  • 无法从 docker 访问 jupyter 笔记本

    我正在尝试运行在 Docker 中创建的 jupyter 笔记本 首先我运行一个容器 docker run p 8888 8888 jupyter tensorflow notebook 我得到的是 I 19 44 47 140 Noteb
  • 如果我关闭 wifi,则无法让 ionic 应用程序工作(在开发过程中)

    因此 在开发时 我关闭了 wifi 然后 ionic 应用程序无法在 Android 设备 模拟器中工作 但是当我关闭 wifi 时 Android 应用程序的已发布和签名的 apk 文件工作得很好 问题是我需要我的应用程序在互联网连接关闭
  • 本地数据缓存同步不会将客户端更改保存到 sdf 文件

    我创建了一个新的 c 项目 并按照本教程中的步骤创建了 LocalDate 缓存 我接下来添加了以下代码 using System using System Collections Generic using System Componen
  • d3:仅线性插值足够接近的点

    假设我有一个具有相应日期的值数组 date d1 value v1 date dn value vn 我想使用 d3 js 进行可视化 只要后续测量在一定的时间范围内 例如相隔不超过一周 我就很高兴在测量之间插入 d3 但是 当后续记录相距