Javascript 在D3js中创建条形图
我以《Web交互式数据可视化》(Interactive Data Visualization for Web)一书为例,介绍了如何使用Javascript 在D3js中创建条形图,javascript,d3.js,Javascript,D3.js,我以《Web交互式数据可视化》(Interactive Data Visualization for Web)一书为例,介绍了如何使用rect创建条形图。我面临的问题是每一个酒吧的起源和它的下滑。代码如下: <!DOCTYPE html> <meta charset="utf-8"> <html> <head> <title>Census</title> <meta http-equiv="Cont
rect
创建条形图。我面临的问题是每一个酒吧的起源和它的下滑。代码如下:
<!DOCTYPE html>
<meta charset="utf-8">
<html>
<head>
<title>Census</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<script type="text/javascript" src="../d3/d3.min.js"></script>
</head>
<body>
<style>
div.bar {
display: inline-block;
width: 20px;
height: 75px; /* We'll override height later */
background-color: teal;
margin-right: 5px;
margin-bottom: 320px;
}
rect{
margin-right: 5px;
}
</style>
<script>
//var dataset = [ 5,10,15];
var dataset = [ 5, 10, 13, 19, 21, 25, 22, 18, 15, 13,
11, 12, 15, 20, 18, 17, 16, 18, 23, 25 ];
/*d3.select("body").selectAll("div")
.data(dataset)
.enter()
.append("div")
.style("height", function(d) {
return d*5 + "px";
})
.attr("class", "bar");
*/
var w = 500;
var h = 100;
var barPadding = 4;
var svg = d3.select("body")
.append("svg")
.attr("width", 520)
.attr("height", 300)
.style("border", "1px solid black");
svg.selectAll("rect")
.data(dataset)
.enter()
.append("rect")
.attr("x", function(d, i) {
return i * 21; //Bar width of 20 plus 1 for padding
})
.attr("y", function(d) {
return h - d; //Height minus data value
})
.attr("width",20)
.attr("height", function(d) {
return d; //This cause issue I guess
});
</script>
</body>
</html>
统计
酒吧{
显示:内联块;
宽度:20px;
高度:75px;/*稍后我们将覆盖高度*/
背景色:青色;
右边距:5px;
边缘底部:320px;
}
直肠{
右边距:5px;
}
//var数据集=[5,10,15];
var数据集=[5,10,13,19,21,25,22,18,15,13,
11, 12, 15, 20, 18, 17, 16, 18, 23, 25 ];
/*d3.选择(“主体”)。选择全部(“div”)
.数据(数据集)
.输入()
.附加(“div”)
.样式(“高度”,功能(d){
返回d*5+“px”;
})
.attr(“类别”、“酒吧”);
*/
var w=500;
var h=100;
var=4;
var svg=d3.选择(“主体”)
.append(“svg”)
.attr(“宽度”,520)
.attr(“高度”,300)
.样式(“边框”,“1px纯黑”);
svg.selectAll(“rect”)
.数据(数据集)
.输入()
.append(“rect”)
.attr(“x”,函数(d,i){
返回i*21;//填充条宽度为20加1
})
.attr(“y”,函数(d){
返回h-d;//高度减去数据值
})
.attr(“宽度”,20)
.attr(“高度”,功能(d){
返回d;//我想这是导致问题的原因
});
代码生成以下输出:
图表是正确的。您需要关于
rect
(条形)尺寸的说明吗?或者别的什么?它是向下增长的,而不是向上增长的,以绘制您正在使用的SVG,它的(0,0)参考点位于绘图区域的左上角。x维度向右增长,y维度向下增长。(x,y)矩形的值用于左上角。在最后,每个矩形都位于相同的底线。@AntoJurkovićquestion updated参见。应该是相同的代码。