使用D3.js缩放大的值以显示它们
Scaling large values down to display them with D3.js
我有一些数据,我已经从石墨API检索,但我有一些麻烦绘制数据由于规模(大读数和时代)。
我的数据格式为
var lineData = [
{
"target": "my.graphite.target",
"datapoints": [
[1418819.0, 1408544820],
[1498919.0, 1408544880],
[1418719.0, 1408544940],
[1488819.0, 1408545000],
[1478719.0, 1408545180]
]
}
];
,其中数据点的第一个点是读数,第二个点是作为epoch的时间。
创建我的尺度,我使用
var xScale = d3.scale.linear()
.range([0, 400])
.domain(d3.extent(lineData[0].datapoints, function(d) { return d[1]; }));
var yScale = d3.scale.linear()
.range([0, 400])
.domain(d3.extent(lineData[0].datapoints, function(d) { return d[0]; }));
生成如下svg:
<svg width="400" height="400">
<path d="M-1563473334.4444444,
7018085.291770574L-1563384334.4444444,
7018085.591022445L-1563473445.5555556,
7018085.890274314L-1563395556.6666667,
7018086.189526185L-1563406778.888889,
7018087.087281796"
stroke="blue"
stroke-width="2"
fill="none"></path>
</svg>
我的理解是范围和域应该将数据中的点缩放到范围,然而这似乎并没有发生。我做错了什么?
http://jsfiddle.net/5eyq6rk5/2/您的xScale
和yScale
在定义其域时指向错误的数组索引。xScale
用d[0]
, yScale
用d[1]
var xScale = d3.scale.linear()
.range([0, 400])
.domain(d3.extent(lineData[0].datapoints, function(d) { return d[0];}));
var yScale = d3.scale.linear()
.range([0, 400])
.domain(d3.extent(lineData[0].datapoints, function(d) { return d[1]; }));
相关文章:
- D3.js生成有效的SVG,但不显示任何内容
- 如何使用d3在基于网格的(热图)图表上正确显示轴
- 仅当变量有值时才显示D3文本标签
- 使用D3.js和GeoJson在地图上显示States上的一些文本
- 在d3.js中显示圆弧末端的文本
- D3.js条形图未显示
- 点击浏览器的“后退”按钮显示的是JSON而不是HTML(使用Rails和d3.js)
- D3.js条形图:不显示 .text
- 单击按钮并将其下载为图像格式时,如何使用引导模式弹出窗口显示D3图表
- 在工具提示中显示D3 SVG
- 如何在d3.js中显示年时间刻度上的最小日刻度
- D3图表未在Android混合应用程序中显示
- 未显示在数据生成的d3形状顶部的套印格式
- 仪表D3.js在指针顶部显示值
- 如何在Apple Watch中显示D3.js图表
- 显示 D3.js将文本标记为两行
- 如何在网格框上显示 d3 元素
- 用柱状图行显示D3中不同的转换率
- 使用来自文件的外部Json数据来显示d3.js饼图
- 如何在Rails应用程序中显示d3.js的圆形包图