D3绘制柱状图

D3绘制柱状图

本文绘制一个横向的柱形图。只绘制矩形,不绘制文字和坐标轴

// 在 SVG 中,矩形的元素标签是 rect。例如:
<svg>
<rect></rect>
<rect></rect>
</svg>

上面的 rect 里没有矩形的属性。矩形的属性,常用的有四个:

​ x:矩形左上角的 x 坐标
​ y:矩形左上角的 y 坐标
​ width:矩形的宽度
​ height:矩形的高度
要注意,在 SVG 中,x 轴的正方向是水平向右,y 轴的正方向是垂直向下的。

<html>
<head>
    <meta charset="utf-8">
    <title>HelloWorld</title>
</head>
<body>
    <script src="http://d3js.org/d3.v3.min.js" charset="utf-8"></script>
    <script>
        var dataset = [250, 210, 170, 130, 90]; //数据(表示矩形的宽度)
        var width = 300;  //画布的宽度
        var height = 300;   //画布的高度
        var svg = d3.select("body")     //选择文档中的body元素
            .append("svg")          //添加一个svg元素
            .attr("width", width)       //设定宽度
            .attr("height", height);    //设定高度

        var rectHeight = 25;   //每个矩形所占的像素高度(包括空白)
        svg.selectAll("rect")  // 选择svg内所有的矩形
            .data(dataset)  //绑定数组
            .enter()     //指定选择集的enter部分
            .append("rect")  //添加足够数量的矩形元素
            .attr("x", 20)
            .attr("y", function (d, i) {
                return i * rectHeight;
            })
            .attr("width", function (d) {
                return d;
            })
            .attr("height", rectHeight - 2)
            .attr("fill", "steelblue");  //给矩形元素设置颜色
    </script>
</body>
</html>
d3.js是一个流行的JavaScript库,专用于数据驱动的文档可视化,由Mike Bostock创建。它非常适合生成各种复杂的图表,包括柱状图。在d3.js中,绘制柱状图的基本步骤通常涉及以下几个关键步骤: 1. **选择元素**:首先,你需要获取HTML中的容器元素,作为图表的基础。 ```javascript var svg = d3.select(&#39;body&#39;).append(&#39;svg&#39;); ``` 2. **设置尺寸**:定义SVG画布的大小,以及每个柱子的宽度和间距。 ```javascript svg.attr(&#39;width&#39;, width).attr(&#39;height&#39;, height); var barWidth = width / data.length; ``` 3. **创建条形**:对于每一条数据,创建一个矩形元素(bar),并计算其位置。 ```javascript data.forEach(function(d) { var rect = svg.append(&#39;rect&#39;) .attr(&#39;x&#39;, x + xScale(d.category)) .attr(&#39;y&#39;, height - yScale(d.value)) // 柱子顶部 .attr(&#39;width&#39;, barWidth) .attr(&#39;height&#39;, function(d) { return yScale(d.value); }); }); ``` 4. **轴标签**:添加坐标轴和标签,通常包括X轴的数据刻度和Y轴的数值。 ```javascript var xAxis = d3.axisBottom(xScale); svg.append(&#39;g&#39;) .attr(&#39;transform&#39;, &#39;translate(0,&#39; + height + &#39;)&#39;) .call(xAxis); var yAxis = d3.axisLeft(yScale); svg.append(&#39;g&#39;) .call(yAxis); ``` 5. **数据绑定和缩放**:`xScale` 和 `yScale` 是转换函数,将数据值映射到视口坐标。 完整示例可能看起来像这样: ```javascript // 更多细节如设置scales、配置动画等... ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值