- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
更新:jsfiddle 示例说明了问题:http://jsfiddle.net/T8SuH/
我是 D3js 和 JavaScript 的新手,但对 Java 很熟悉。我有一个来自自行车共享系统的大型 CSV 数据集,组织如下:
event_id, station_id, timestamp, number_of_bikes, number_of_empty_docks
为了减小文件大小,我的数据文件只包含各个站点的新事件。因此,不同站点的时间戳既不是固定的时间间隔,也不是重合的。例如,连续条目可能如下所示:
31044955, 08, 2012-05-01 00:00:00, 9, 6
31044965, 23, 2012-05-01 00:32:00, 2, 6
31044972, 02, 2012-05-01 00:44:00, 10, 5
31044999, 17, 2012-05-01 02:10:10, 12, 6
...
我想创建一个堆积面积图,其中 x 轴是时间(24 小时),y 轴是(堆积)来自选定站点的库存。 D3 Wiki 提到应该在计算堆栈之前对数据进行插值。我考虑了两种方法:- 在 D3 外部插入我的数据集(使用 Java)并将其保存为一个新的 CSV 文件,其中所有站点都有并发时间戳。这种方法会使我的文件大小增加 6 倍以上(目前是 25MB),我担心 D3 处理它的速度会变慢。- 在进行堆栈或绘制区域/路径之前,在 D3/Javascript 中插入数据。
虽然我觉得第二种方式会更快(在性能方面),但我不知道该怎么做,也没有找到任何相关的教程/示例。我只是想我必须创建一个范围 (d3.time.minute.range),然后将它与 map() 函数一起使用来创建一个新数组?有人可以提供一个建议,说明如何在 D3 中以不规则的时间间隔插入多个数据集(例如,对于每个站点),然后再将它们堆叠起来吗?
提前谢谢你。
最佳答案
我以前遇到过同样的问题。稍微巧妙一点,您可以添加缺失值,以便每个系列都具有相同的 x 坐标集(时间戳)。在将数据发送到堆栈布局之前,我向您的 jsfiddle 添加了几行以处理数据。
首先,我需要 super 时间集:
var times = [];
myData.forEach(function(d) {
if(times.indexOf(d.date.getTime()) === -1) {
times.push(d.date.getTime());
}
});
times.sort();
这会产生数组(来自您的数据):
0:00, 4:00, 4:30, 4:45, 8:08, 12:08, 13:08, 16:08, 20:08
请注意,最后我对其进行了排序,因为这将真正简化在站点数据系列中查找缺失值的过程。我打算进行一种排序列表合并,以将无变化的数据值填充到系列中。这是您的系列直接从数据(时间值对)看起来的样子:
Initial series
Station_1 0:00 37, 4:30 36, 8:08 18, 12:08 10, 16:08 32, 20:08 35
Station_2 0:00 32, 4:00 29, 8:08 6, 12:08 12, 16:08 29, 20:08 32
Station_3 0:00 36, 4:45 30, 8:08 10, 13:08 13, 16:08 32, 20:08 36
Station_4 0:00 31, 4:00 28, 8:08 12, 12:08 14, 16:08 28, 20:08 31
因此对于每个系列,遍历时间数组并插入缺失值,很可能有更有效的方法来执行此操作:
myNestedData.forEach(function(stationData) {
stationData.values.sort(function(a,b) {
return d3.ascending(a.date.getTime(), b.date.getTime());
});
var j = 0;
var lastStationValue = 0;
for(var i = 0; i < times.length; i++) {
// If the station series is too short I should not equal any
// value from the times array
stationTime = j <= stationData.values.length ?
stationData.values[j].date.getTime() : 0;
if(times[i] !== stationTime) {
// Missing values need to be spliced in.
stationData.values.splice(j, 0, {
date: new Date(times[i]),
inventory: lastStationValue,
station_id: stationData.key
});
j++;
}
else {
// We have a value for this time, move along.
lastStationValue = stationData.values[j].inventory;
j++;
}
}
});
现在系列应该全部排好!
Station_1 0:00 37, 4:00 37, 4:30 36, 4:45 36, 8:08 18, 12:08 10, 13:08 10, 16:08 32, 20:08 35
Station_2 0:00 32, 4:00 29, 4:30 29, 4:45 29, 8:08 6, 12:08 12, 13:08 12, 16:08 29, 20:08 32
Station_3 0:00 36, 4:00 36, 4:30 36, 4:45 30, 8:08 10, 12:08 10, 13:08 13, 16:08 32, 20:08 36
Station_4 0:00 31, 4:00 28, 4:30 28, 4:45 28, 8:08 12, 12:08 14, 13:08 14, 16:08 28, 20:08 31
您可以查看更新的 fiddle here
关于javascript - D3js : How to interpolate datasets with irregular time intervals before stacking them?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20806789/
我从开普勒架构技术简介中读到 动态并行 , CUDA 5.0 新增,支持编程模式中的递归和不规则循环结构。 但是有人能告诉我什么是不规则循环结构吗? 最佳答案 根据 this book on page
我打算创建一个室内应用程序,但我遇到了 ibeacons 响应不规则的问题。 如果我有 9 个 ibeacons,有时这个 ibeacons 的响应是非常随机的: 示例: 黄色圆圈是使用 iPhone
如果这个问题已经被问过,请提前道歉,但我真的不知道如何搜索我遇到的问题。 我正在开发一个酒店预订和预订管理系统,旨在与多个客户合作,预计一些客户会有不同的要求,其中包括预订响应表单中标准之外的其他
我有一个数据文件(表示邻接表),我想将其加载为 std::vector > . 1 2 4 0 2 0 1 0 在 C++/C++11 中最简洁的方法是什么? 这是一个蹩脚的尝试,它对空行不起作用..
下面的代码( also live here )似乎证明了 setTargetAtTime 的性能不一致...它“应该”在 2 秒时膨胀到最大值,然后在 7 秒时逐渐消失,然后在 12 秒时终止振荡器(
在常规变换中,每个 GPU 线程都应具有相同的时间复杂度 O。例如: for i=0 to 10: c[i] = a[i]*b[i] 在不规则变换上,它不是: for i=0 to len(arr)
自事件发生后的几天里,我都有数据。这些数据是不定期采样的-我的时间点是0、5、6、10、104天。我没有具体的日期时间信息-也就是说,我不知道我所研究的事件在现实生活中何时发生。 我想使用ggplot
我正在使用 TFLearn 和 python 3.7 创建我的第一个神经网络,其目标是玩蛇。游戏由 10x10 的棋盘组成,空白区域显示为 0,蛇试图吃掉的目标显示为 -1,蛇的头部显示为 1,蛇的每
我有数千个以表格格式存储的多边形(给定它们的 4 个角坐标),代表地球的小区域。此外,每个多边形都有一个数据值。该文件看起来像这样: lat1, lat2, lat3, lat4, lon1,
我有一个包含非常不规则条目的 CSV 文件。一行的第一个条目没有任何引号,整行都被引用,并且每个字段都用双引号引起来,如下所示: # my_file.csv, opened with sublime
我想实现这样的效果: 有人知道如何在 Canvas 上画这样一条线吗? 最佳答案 再靠近一点: chalkPaint = new Paint(); chalkPaint.setStyl
尝试在 Mathematica 中绘制一些 3D 数据时遇到以下问题。数据最初是在规则格子上计算的,即我计算 data = Flatten[Table[{x,y,f[x,y]},{x,x0,x1,dx
我在我的一个 Android 应用 中使用 openSL ES。当应用程序位于前台时,回调非常规律。麦克风回调大约每 10 毫秒调用一次,扬声器回调也是如此。但是,如果我将应用程序放在后台并打开浏览器
更新:jsfiddle 示例说明了问题:http://jsfiddle.net/T8SuH/ 我是 D3js 和 JavaScript 的新手,但对 Java 很熟悉。我有一个来自自行车共享系统的大型
我正在尝试创建一个 277 度的 SVG 饼图。 我有一些代码可以创建一个看起来正确的饼图,但我不确定我的代码是否首先正确(在正确的位置)以及我是否可以改进它。 左边是我试图重新创建的饼图,右边是我的
我正在尝试使用 ESLint 在项目中强制执行编码风格,并且我有很多 Irregular whitespace not allowed由这样的代码引起的错误: var a = b || 10; //
我正在尝试使用 chart.js 创建一个多线时间序列图。问题是每条线的数据点可能不具有相同的间隔,例如。一条线可以有 5 秒间隔的点。另一条线可以有 10 秒间隔的点。 有人可以建议我如何解决这个问
我收到 表包含不规则行长 当我尝试显示来自 的表格时出错html 使用 flutter_html: 1.0.0 插入。如何解决这个问题? 最佳答案 新版本的 flutter_html 已经发布。好像解
我正在使用 ggplot 和 geom_tile 绘制连续变量。默认情况下,它使用连续颜色条进行绘图。像这样的事情, data <- cbind(ID = 1:100, a = runif(100,
我刚开始使用 D3,很快就明白这是一个非常低级的工具。我正在使用 D3 生成 Marimekko 图表,使用 Mike Bostock 在 b.locks ,老实说,这对我来说太先进了,但我开始使用
我是一名优秀的程序员,十分优秀!