Javascript D3js图形未生成:控制台上无错误
我是svg和d3js的新手,我正在关注关于svg和d3js的教程Javascript D3js图形未生成:控制台上无错误,javascript,svg,d3.js,Javascript,Svg,D3.js,我是svg和d3js的新手,我正在关注关于svg和d3js的教程 $('to')。在('change',function()上{ var endDate=新日期(Date.parse($('#to').val() )); var宽度=1024; var高度=500; var-margin={top:20,right:20,top:20,bottom:20}; var parseDate=d3.time.format(“%x%H”).parse; var xAxis=d3.svg.axis().s
$('to')。在('change',function()上{
var endDate=新日期(Date.parse($('#to').val()
));
var宽度=1024;
var高度=500;
var-margin={top:20,right:20,top:20,bottom:20};
var parseDate=d3.time.format(“%x%H”).parse;
var xAxis=d3.svg.axis().scale(x)
.方向(“底部”)。刻度(30);
var yAxis=d3.svg.axis().scale(y)
.方向(“左”)。刻度(30);
var valueline=d3.svg.line()
.x(函数(d){返回x(d.timestamp);})
.y(函数(d){返回y(d.phaseOne);返回y(d.phaseTo);返回y(d.phaseThree);};
var svg=d3。选择(“图形”)
.append(“svg”)
.attr(“宽度”,宽度+边距。左侧+边距。右侧)
.attr(“高度”,高度+边距。顶部+边距。底部)
.附加(“g”)
.attr(“转换”、“平移”(+margin.left+)、“+margin.top+”);
var x=d3.time.scale().range([0,width]);
变量y=d3.scale.linear().range([height,0]);
d3.json('uploads/.json',函数(错误,数据){
data.forEach(函数(d){
d、 时间戳=解析日期(d.时间戳);
d、 pday_chan1=+d.day_chan1;
d、 d.day_chan2=+d.day_chan2;
d、 d.day_chan3=+d.day_chan3;
});
x、 域(d3.extent(数据,函数(d){返回d.date;}));
y、 域([0,d3.max(数据,函数(d){返回d.day_chan1;})];
y、 域([0,d3.max(数据,函数(d){返回d.day_chan2;})];
y、 域([0,d3.max(数据,函数(d){返回d.day_chan3;})];
追加(“路径”)
.attr(“d”,valueline(数据));
svg.append(“g”)//添加X轴
.attr(“类”、“x轴”)
.attr(“变换”、“平移(0)”、“高度+”)
.呼叫(xAxis);
svg.append(“g”)//添加Y轴
.attr(“类”、“y轴”)
.呼叫(yAxis);
});
});
我没有生成一行,而是尝试生成三行。代码没有显示任何错误,我不知道应该从哪里开始调试。任何指点都将不胜感激 你能提供一个提琴吗?我正在解析一个json文件,所以即使是我写的代码也会有很大的变化,而且我在d3不是专业人士。json文件正在加载吗?如果是的话,试着用这个打印出来<代码>d3.select('body').append('pre').text(JSON.stringify(data,null'))。它确实被加载了,这是我得到的格式[{“timestamp”:“12\/16\/2013 0:00”,“curr\u property”:“7211”,“curr\u property\u cost”:“123”,“day\u property”:“48”,“day\u property\u cost”:“281”,“curr\u solar\u-generating”:“4958”,“日太阳能输出”:“0”,“日太阳能输出”:“33”,“日太阳能输出”:“0”,“日太阳能1”:“1964”,“日太阳能2”:“4958”,“日太阳能3”:“289”,“日太阳能1”:“13”,“日太阳能2”:“33”,“日太阳能3”:“1”}]这里的问题是什么?你没有得到图表,你得到的图表是错误的吗?它是怎么错的?
$('#to').on('change',function() {
var endDate = new Date(Date.parse( $('#to').val()
));
var width= 1024;
var height= 500;
var margin = {top:20, right:20, top:20, bottom:20};
var parseDate = d3.time.format("%x %H").parse;
var xAxis = d3.svg.axis().scale(x)
.orient("bottom").ticks(30);
var yAxis = d3.svg.axis().scale(y)
.orient("left").ticks(30);
var valueline = d3.svg.line()
.x(function(d) { return x(d.timestamp); })
.y(function(d) { return y(d.phaseOne); return y(d.phaseTwo); return y(d.phaseThree);});
var svg = d3.select("#graph")
.append("svg")
.attr("width", width + margin.left + margin.right)
.attr("height", height + margin.top + margin.bottom)
.append("g")
.attr("transform","translate(" + margin.left + "," + margin.top + ")");
var x = d3.time.scale().range([0, width]);
var y = d3.scale.linear().range([height, 0]);
d3.json('<?php echo base_url(); ?>uploads/<?php echo $username; ?>.json',function(error,data){
data.forEach(function(d){
d.timestamp = parseDate(d.timestamp);
d.pday_chan1 = +d.day_chan1;
d.d.day_chan2 = +d.day_chan2;
d.d.day_chan3 = +d.day_chan3;
});
x.domain(d3.extent(data, function(d) { return d.date; }));
y.domain([0, d3.max(data, function(d) { return d.day_chan1; })]);
y.domain([0, d3.max(data, function(d) { return d.day_chan2; })]);
y.domain([0, d3.max(data, function(d) { return d.day_chan3; })]);
svg.append("path")
.attr("d", valueline(data));
svg.append("g") // Add the X Axis
.attr("class", "x axis")
.attr("transform", "translate(0," + height + ")")
.call(xAxis);
svg.append("g") // Add the Y Axis
.attr("class", "y axis")
.call(yAxis);
});
});