d3通过改变参数化函数使折线图水平动画化
d3 animate line graph horizontally by changing parameterized function
我试图通过改变d3的均值和方差来动画化高斯。我遇到的问题是,曲线的点只是在Y轴上平移,所以它看起来像一个高斯下降,另一个上升。我如何修改此代码以实现我想要的目标?
//Define the curves, this would be replaced by a function call
var g1 = [{'x': 0, 'y': 0.0}, {'x': 2, 'y': 0.0}, ...];
var g2 = [{'x': 0, 'y': 0.0}, {'x': 2, 'y': 0.0}, ...];
var lineFunction = d3.svg.line()
.x(function(d) { return d.x*2; })
.y(function(d) { return d.y * 2000; })
.interpolate("linear");
var lineGraph = svg.append("path")
.attr("d", lineFunction(g1))
.attr("stroke", "blue")
.attr("stroke-width", 2)
.attr("fill", "none");
lineGraph.transition().duration(1000).attr('d', lineFunction(g2));
http://jsfiddle.net/x22xE/104/
感谢meetamit的帮助,以下是(混乱的)解决方案:
var svg = d3.select('#myelement').append('svg')
.attr('width', 200)
.attr('height', 200);
function gaussian(u, s, x) {
var m = s * Math.sqrt(2 * Math.PI);
var e = Math.exp(-Math.pow(x - u, 2) / (2 * s * s));
return (e * 1000 / m).toFixed(3); // toFixed is important
}
function pdf(u, s, resolution) {
var result = [];
for (var i = 0; i < 200; i += resolution) {
result.push({x: i, y: gaussian(u, s, i)})
}
return result;
}
var lineFunction = d3.svg.line()
.x(function(d) { return d.x; })
.y(function(d) { return d.y; })
.interpolate("linear");
var lineGraph = svg.append("path")
.attr("d", lineFunction(pdf(0,5,1)))
.attr("stroke", "blue")
.attr("stroke-width", 2)
.attr("fill", "none");
lineGraph.transition().duration(1000)
.attrTween('d', function() {
return function(t) {
return lineFunction(pdf(150 * t, 5, 1));
}
})
相关文章:
- 用与线条相同的颜色填充多折线图上的点
- 跟踪jqplot垂直折线图的鼠标位置
- Morris.js折线图x轴标签在调整大小后消失
- Chart.js V2折线图缺点
- 将直流图表库中的折线图缩放限制为小时
- 如何用d3.js绘制折线图
- 部分填充区域的折线图
- 将时间缩放添加到折线图(Chart.js)
- Chart.js折线图的0线型
- d3绘制动画折线图的基本示例
- Javascript FLOT组合条形图;以x轴为字符串的折线图
- 如何在折线图中显示最近的值
- charts js更改折线图轴的字体大小/颜色和背景线
- 从特定系列的谷歌可视化折线图中删除悬停工具提示
- D3折线图鼠标悬停坐标效果
- 以角度nvd3折线图显示当前时间
- 具有任意多条线的D3折线图(以及特定的数据格式)
- d3通过改变参数化函数使折线图水平动画化
- D3.js水平折线图无法正确显示工具提示
- 如何在Google Visualization API中格式化折线图上的水平轴标签