我正在尝试使用基于d3.js的库d3-timeseries创建时间序列图。我在我的JSP脚本标签中使用了作者提到的实现,但我什么都没得到。任何帮助表示赞赏。
我的代码:
//data :
// [{date:new Date('2013-01-01'),n:120,n3:200},...]
var chart = d3.timeseries()
.addSeries(data,{x:'date',y:'n',diff:'n3'},
{interpolate:'monotone',color:"#333"}).width(900)
chart('#chart')
答案 0 :(得分:0)
要使用此库,您需要执行一些在任何地方都没有很好记录的步骤。
bower install
src
文件夹,其中d3_timeseries.js
和d3_timeseries.css
将这两个文件夹链接到您的html文件示例index.html文件,如果在解压缩库的文件夹中使用,将起作用:
<html>
<head>
<script src="bower_components/d3/d3.min.js"></script>
<script src="src/d3_timeseries.js"></script>
<link href="src/d3_timeseries.css" rel="stylesheet" type="text/css">
</head>
<body>
<div class="chart" id="chart3"></div>
</body>
<script>
var data = createRandomData(80,[0,1000],0.01)
var chart3 = d3.timeseries()
.addSerie(data,{x:'date',y:'n',diff:'n3'},{interpolate:'monotone',color:"#333"})
.width(900)
chart3('#chart3')
function createRandomData(n,range,rand)
{
if(range==null)
range=[0,100]
if(rand==null)
rand=1/20
var num = range[0] + Math.floor(Math.random()*(range[1]-range[0]))
var num2 = range[0] + Math.floor(Math.random()*(range[1]-range[0]))
var num3 = num
var d= new Date('2013-01-01')
var data = []
var rgen = d3.random.normal(0,(range[1]-range[0])*rand)
for (var i = 0; i<n; i++)
{
data.push({date:d,n:num,n2:num2,n3:num3,
ci_up:num3*1.05,ci_down:num3*0.95
})
d = new Date(d.getTime() + 1000*60*60*24)
num = num+rgen()
num3 = num+rgen()/3
num = Math.min(Math.max(num,range[0]),range[1])
num2 = num2+rgen()
num2 = Math.min(Math.max(num2,range[0]),range[1])
}
return data;
}
</script>
</html>