如何在D3.js线形图上绘制时间数据
How to plot time data on a D3.js line graph
我有大量与时间相关的数据。我想画一个简单的线形图。一个简单的例子:
var data = [{ time: 13:30, size: 100 }, { time: 13:37, size: 500}, { time: 13: 42, size: 300 }
{ time: 13:51, size: 150 }, { time: 13:56, size: 175 }, { time: 15:59, size: 75 }
{ time: 16:11, size: 75 }, { time: 16:37, size: 125 }, { time: 15:27, size: 200 } [...]
{ time: 20:36, size: 500 }]
多个时间值,以及相应的大小值。当然,我不想在这张图上画出每一个时间值。相反,我想取最低值13:30,然后以30分钟的间隔在坐标轴上绘制时间(即13:30,14:00,14:30……)20:30),直到我到达数据数组中的最新时间。同时,我想绘制每个大小值。因此,该图将只显示13:30和14:00的刻度,但是与13.37、13.42、13.51、13.56对应的值将绘制在直线上。
我该怎么做呢?
我的第一次尝试是这样的:
var graph = d3.select('.graph'),
WIDTH = 790,
HEIGHT = 250,
MARGINS = {
top: 20,
right: 20,
bottom: 20,
left: 50
}
xScale = d3.scale.linear().range([MARGINS.left, WIDTH - MARGINS.right]),
yScale = d3.scale.linear().range([HEIGHT - MARGINS.top, MARGINS.bottom]).domain([smallest, largest]),
xAxis = d3.svg.axis().scale(xScale),
yAxis = d3.svg.axis().scale(yScale).orient("left");
注:"最小"answers"最大"变量是我的数据数组中最小和最大的大小值,在其他地方计算。显然,这是错误的,因为这会在坐标轴上绘制每个时间值(如上所述,我不想这样做),即使我这样做了,也会出现可怕的错误和故障。
我将如何去实现我想要实现的目标?
谢谢——Gaweyne
解决了。d3.time。Scale .linear()
xScale = d3.time.scale(range([MARGINS.left, WIDTH - MARGINS.right]).domain(new Date([//Earliest Date//]), new Date([//Latest Date//]))
相关文章:
- 在时间线上绘制点的公式
- 浮点:以日期/时间作为 x 轴的图形未正确绘制
- 带注释的时间线,重新绘制时图形会闪烁
- 谷歌用数字绘制时间线
- 如何在html5中根据时间在画布上绘制条形图
- 绘制时间轴 - D3.js
- Highchart:从 java 传递系列映射时绘制日期时间图表问题
- .js当前时间线:如何仅根据日期绘制线条
- flot 绘制时间戳问题
- 在基于谷歌地图的标记时间中绘制多边形
- 拆分脚本/CSS 是否会产生更快的执行/绘制时间
- 在 D3.js 中绘制实时时间序列时奇怪的 x 值
- HTML5,在加载时将像素渲染为图像,以加快绘制时间
- 绘制 D3 折线图后如何添加更多时间序列数据
- 使用人力车绘制时间序列图.输入数据的格式
- 如何在D3.js线形图上绘制时间数据
- 在Flot中以毫秒为单位绘制时间轴
- 绘制时间序列数据-从JSON格式的x轴
- Flot-绘制时间不起作用的图表
- 在所有浏览器中计算元素的绘制时间