D3学习之画布制作

最近大半个月都和d3斗争,学习艰辛(呜呜……)如果觉得作者写的对你有用,可以打赏作者哦!owo

起言:结合自己的学习之路,我认为要想使用d3画图搞清楚布局很重要,层次分明,就给了你很大的灵活性,写起代码来就不死板,本文就是给你解释svg在网页中的层次,当然,如果你想理解本文,你还需要一些html的基础知识作为铺垫。

一、【D3图表在html中的结构】
   svg:可伸缩适量图像
   g:一个分组的元素,相当于html中的div元素;图表都放到g元素中

   

  由图标我们可以知道,svg是html网页的一个元素,g元素是svg中的一个块级元素(div)

  上面的层级是这样的:首先我们在html的body元素中声明了一个ID是container的div元素

            之后我们在container这个div元素中添加了一个svg画布

            其次我们在svg中又添加了一个g元素,并进行了移位。

  

<!DOCTYPE html>
<!--混合嵌入式代码的集合-->
<html>
    <head>
        <meta charset="utf-8">
        <title>画布制作</title>
        <style>
            #container{
                background: #ddd;
                width: 500px;
                height: 250px;
            }
        </style>
    </head>
    <body>
        <div id="container"> </div>
        <script src="https://cdn.bootcss.com/d3/3.5.15/d3.js"></script><!--d3在线引用文档-->
        <script>
        var svg=d3.select("#container")/*使用select选择了div(container)元素*/                
        .append("svg")//在container元素中使用append函数添加了一个svg画布
        .attr("width",450)//attr是attribute的缩写,so,可以使用attr给svg添加属性
        .attr("height",200);/*在svg中我把宽高分别设置为了450、200px;
        特意与div(container)元素加以区分,以理解D3图表在html中的结构*/
        d3.select("svg")//此时选中的svg是上面定义的svg及其复加的内容
            .append("g")//添加g元素
            .attr("transform","translate(50,30)");//设置偏移量
        </script>
    </body>
</html>

上面的代码是可以运行的,可以下载来亲自试一下效果会更好。

设置偏移量的时候涉及到了html网页坐标,在这就简单介绍一下; 

网页页面的原点在左上角,绘图的坐标系是如上图所示的。

总结:本章介绍了svg元素和g元素在网页页面中的所处的位置,建立了设置svg画布的模型,

  如果你是一个希望利用d3来实现数据可视化的玩家的话,本教程很适合你,记得点赞打赏哦。

TIPS:如果你是没有视频无法学习的视点怪的化,这有画布制作视频哦。    

  

 

转载于:https://www.cnblogs.com/gti2baby/p/11264971.html

好的,以下是使用 D3.js(版本 5)制作饼图的步骤: 1. 引入 D3 库 ```html <script src="https://d3js.org/d3.v5.min.js"></script> ``` 2. 准备容器 ```html <div id="chart" style="width: 600px; height: 400px;"></div> ``` 3. 准备数据 假设已经有了一个对象数组,每个对象包含两个属性:`sex` 表示性别(取值为 `'男'` 或 `'女'`),`count` 表示数量。 ```javascript var data = [ {sex: '男', count: 60}, {sex: '女', count: 40} ]; ``` 4. 创建 SVG 元素 ```javascript var svg = d3.select('#chart') .append('svg') .attr('width', 600) .attr('height', 400); ``` 5. 创建饼图布局 ```javascript var pie = d3.pie() .value(function(d) { return d.count; }); ``` 6. 创建弧形生成器 ```javascript var arc = d3.arc() .outerRadius(150) .innerRadius(0); ``` 7. 创建颜色比例尺 ```javascript var color = d3.scaleOrdinal() .domain(data.map(function(d) { return d.sex; })) .range(['#1f77b4', '#ff7f0e']); ``` 8. 绘制饼图 ```javascript var g = svg.append('g') .attr('transform', 'translate(300,200)'); var arcs = g.selectAll('.arc') .data(pie(data)) .enter() .append('g') .attr('class', 'arc'); arcs.append('path') .attr('d', arc) .attr('fill', function(d) { return color(d.data.sex); }); arcs.append('text') .attr('transform', function(d) { return 'translate(' + arc.centroid(d) + ')'; }) .attr('text-anchor', 'middle') .text(function(d) { return d.data.sex; }); ``` 以上是一个简单的饼图制作的例子,你可以根据自己的需求进行更改。请注意,如果数据来源不同,需要相应地修改数据和布局选项。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值