d3.js - 空数据点的 Visx Linepath(d3 曲线)线性插值
问题描述
我有一个包含空数据点的 Visx 折线图和系列。
如果找到 null,我可以将值设置为 0,从而呈现如下图表:
<LinePath
curve={curveLinear}
data={[0.55, 1, null, null, 0.8, 1, 1, null, 2, 2.2]}
x={(d, idx) => xScale(idx)}
y={(d, idx, s) => {
if (d === null) {
return y0Scale(0);
}
return y0Scale(d);
}}
/>
<LinePath
curve={curveLinear}
data={[0.55, 1, null, null, 0.8, 1, 1, null, 2, 2.2]}
x={(d, idx) => xScale(idx)}
y={(d, idx, s) => {
return y0Scale(d);
}}
defined={(a) => {
return a !== null;
}}
/>
但我想在点之间插入值,以显示一条连续的线。例如此处显示的红线之间的绿线:
在 HighCharts 中,这相当于将“connectNulls”设置为 true,https: //api.highcharts.com/highcharts/plotOptions.series.connectNulls 。
在 Visx 中如何做到这一点?它在引擎盖下使用 d3。
也许这是 Visx(或 d3)的一个特性,或者我可以在 y 值上运行第三方“线性插值”库:
y={(d, idx, s) => {
if (d == null) {
return y0Scale(interpolateY(s, idx, s))
}
return y0Scale(d);
}}
解决方案
推荐阅读
- javafx - 与普通 Boxes 相比,JavaFX TriangleMesh 会导致大量开销/缓慢
- ios - 缩放级别更改后,多个 MKPolygon 更改颜色
- python - 过滤包含字符串完全匹配的行
- algorithm - 最大排列数
- openssl - 是否可以从密钥库中提取私钥?
- android - 以编程方式更改 MotionLayout 运动场景中的 ConstraintSet 属性
- java - 如何为 Jersey We Services 测试用例初始化 Junit 的 JNDI 上下文
- javascript - 从 API 网关获取请求正文作为字符串,期望 JSON 内容
- visual-studio-code - 可以在更新时向用户显示您的 VSCode 扩展/颜色主题通知吗?
- reporting-services - SSRS - 跨页面具有组标题的子报表?