D3.js d3js的负值和正值
我想用d3js显示负值和正值。。。使用dis代码,它只生成正值 我曾经做过这样的工作: 有人能帮我吗 她的密码是:D3.js d3js的负值和正值,d3.js,negative-number,D3.js,Negative Number,我想用d3js显示负值和正值。。。使用dis代码,它只生成正值 我曾经做过这样的工作: 有人能帮我吗 她的密码是: var margin = {top: 20, right: 20, bottom: 30, left: 40}, width = 1200 - margin.left - margin.right, height = 390 - margin.top - margin.bottom; var y0 = Math.max(Math.abs(d3.min(d3.csv)), Mat
var margin = {top: 20, right: 20, bottom: 30, left: 40},
width = 1200 - margin.left - margin.right,
height = 390 - margin.top - margin.bottom;
var y0 = Math.max(Math.abs(d3.min(d3.csv)), Math.abs(d3.max(d3.csv)));
var y = d3.scale.linear()
.domain([-y0, y0])
.range([height,0])
.nice();
var x = d3.scale.ordinal()
.domain(d3.range(d3.csv.length))
.rangeRoundBands([0, width], .1);
var color = d3.scale.ordinal()
.range(["#FFFFFF", "#FF0000", "#FE642E", "#00FF00", "#04B404", "#a05d56", "#d0743c", "#ff8c00"]);
var xAxis = d3.svg.axis()
.scale(x)
.orient("bottom");
var yAxis = d3.svg.axis()
.scale(y)
.orient("left")
var chart2 = d3.select("#graph2")
.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 div = d3.select("body").append("div")
.attr("class", "tooltip")
.style("opacity", 0);
d3.csv("dataanzeigeauto3.asp", function(error, data) {
color.domain(d3.keys(data[0]).filter(function(key) { return key !== "State"; }));
data.forEach(function(d) {
var y0 = 0
d.ages = color.domain().map(function(name) { return {name: name, y0: y0, y1: y0 += +d[name]}; });
d.total = d.ages[d.ages.length - 1].y1;
});
x.domain(data.map(function(d) { return d.State; }));
y.domain([0, d3.max(data, function(d) { return d.total; })]);
chart2.append("g")
.attr("class", "x axis")
.attr("transform", "translate(0," + height + ")")
.call(xAxis);
chart2.append("g")
.attr("class", "y axis")
.call(yAxis)
.append("text")
.attr("transform", "rotate(-90)")
.attr("dy", ".71em")
.attr("y", 6)
.style("text-anchor", "end")
.text("Anzahl");
var state2 = chart2.selectAll(".state")
.data(data)
.enter().append("g")
.attr("class", "g")
.attr("transform", function(d) { return "translate(" + x(d.State) + ",0)"; });
state2.selectAll("rect")
.data(function(d) { return d.ages; }) .enter().append("rect")
.attr("class", function(d) { return d < 0 ? "bar negative" : "bar positive"; })
.attr("y", function(d) { return y(Math.max(0, (d.y1))); })
.attr("height", function(d) { return Math.abs(y(d.y0) - y(d.y1)); })
.attr("width", x.rangeBand())
.style("fill", function(d) { return color(d.name); })
.call(d3.helper.tooltip()
.attr({class: 'tooltip2'})
.text(function(d, i){ return d.name + ': '+ (-((d.y0) - (d.y1))) ; })
);
var legend2 = chart2.selectAll(".legend")
.data(color.domain().slice().reverse())
.enter().append("g")
.attr("class", "legend")
.attr("transform", function(d, i) { return "translate(0," + i * 100 + ")"; });
legend2.append("rect")
.attr("x", width - 30)
.attr("width", 18)
.attr("height", 18)
.style("fill", color);
legend2.append("text")
.attr("x", width - 35)
.attr("y", 14)
.attr("dy", ".35em")
.style("text-anchor", "end")
.text(function(d) { return d; });
});
var margin={top:20,right:20,bottom:30,left:40},
宽度=1200-margin.left-margin.right,
高度=390-margin.top-margin.bottom;
var y0=Math.max(Math.abs(d3.min(d3.csv)),Math.abs(d3.max(d3.csv));
变量y=d3.scale.linear()
.domain([-y0,y0])
.范围([高度,0])
.nice();
var x=d3.scale.ordinal()
.domain(d3.range(d3.csv.length))
.rangeRoundBands([0,宽度],.1);
var color=d3.scale.ordinal()
.范围([“FFFFFF”、“FF0000”、“FE642E”、“00FF00”、“04B404”、“a05d56”、“d0743c”、“ff8c00”);
var xAxis=d3.svg.axis()
.比例(x)
.东方(“底部”);
var yAxis=d3.svg.axis()
.比例(y)
.东方(“左”)
var chart2=d3。选择(“图2”)
.append(“svg”)
.attr(“宽度”,宽度+边距。左侧+边距。右侧)
.attr(“高度”,高度+边距。顶部+边距。底部)
.附加(“g”)
.attr(“转换”、“平移”(+margin.left+)、“+margin.top+”);
var div=d3.选择(“主体”).追加(“div”)
.attr(“类”、“工具提示”)
.样式(“不透明度”,0);
d3.csv(“dataanzeigaeuto3.asp”),函数(错误,数据){
域(d3.keys(数据[0]).filter(函数(键){returnkey!==“State”});
data.forEach(函数(d){
变量y0=0
d、 ages=color.domain().map(函数(名称){return{name:name,y0:y0,y1:y0+=+d[name]};});
d、 总计=d.ages[d.ages.length-1].y1;
});
x、 域(data.map(函数(d){返回d.State;}));
y、 域([0,d3.max(数据,函数(d){返回d.total;})];
图2.附加(“g”)
.attr(“类”、“x轴”)
.attr(“变换”、“平移(0)”、“高度+”)
.呼叫(xAxis);
图2.附加(“g”)
.attr(“类”、“y轴”)
.呼叫(yAxis)
.append(“文本”)
.attr(“变换”、“旋转(-90)”)
.attr(“dy”,“.71em”)
.attr(“y”,6)
.style(“文本锚定”、“结束”)
.文本(“Anzahl”);
var state2=chart2.选择全部(“.state”)
.数据(数据)
.enter().append(“g”)
.attr(“类别”、“g”)
.attr(“transform”,函数(d){return”translate(“+x(d.State)+”,0)”;});
状态2.选择全部(“rect”)
.data(函数(d){return d.ages;}).enter().append(“rect”)
.attr(“类”,函数(d){返回d<0?“条负”:“条正”;})
.attr(“y”,函数(d){返回y(Math.max(0,(d.y1));})
.attr(“height”,函数(d){return Math.abs(y(d.y0)-y(d.y1));}
.attr(“宽度”,x.rangeBand())
.style(“fill”,函数(d){返回颜色(d.name);})
.call(d3.helper.tooltip()
.attr({class:'tooltip2'})
.text(函数(d,i){返回d.name+':'+((d.y0)-(d.y1));})
);
var legend2=chart2.选择全部(“.legend”)
.data(color.domain().slice().reverse())
.enter().append(“g”)
.attr(“类”、“图例”)
.attr(“transform”,函数(d,i){return“translate(0,+i*100+”);});
legend2.附加(“rect”)
.attr(“x”,宽度-30)
.attr(“宽度”,18)
.attr(“高度”,18)
.样式(“填充”,颜色);
legend2.附加(“文本”)
.attr(“x”,宽度-35)
.attr(“y”,14)
.attr(“dy”,“.35em”)
.style(“文本锚定”、“结束”)
.text(函数(d){return d;});
});
在决定y0
的代码中什么是d3.csv
?在Math.max(Math.abs(d3.min(d3.csv)),Math.abs(d3.max(d3.csv)))中什么是d3.csv
是一个可以用来检索数据的函数。定义y0
时使用它的方式毫无意义。我建议您看一看(很多)使用CSV文件绘制图形的示例之一。您的数据。你想计算的最小值和最大值。