D3js基础课08:散点图

二维数据通常使用散点图进行可视化。其中两个尺寸表示在两个不同的轴上,水平x轴和垂直y轴。

数据

数组:每个主数组包含一个点。

<script src="https://d3js.org/d3.v6.min.js"></script>
<div id="view12"></div>
<script>
    data = [
        [10, 20], [20, 100], [200, 50],
        [25, 80], [10, 200], [150, 75],
        [10, 70], [30, 150], [100, 15]
    ]

    svg = d3.select("#view12")
        .append("svg")
        .attr("width", 250)
        .attr("height", 250)
        .attr("style", "border:1px solid red;")
    svg.selectAll("circle")
        .data(data).enter()
        .append("circle")
        .attr("cx", function(d) {return d[0]})
        .attr("cy", function(d) {return d[1]})
        .attr("r", 4)
</script>

改变大小

<script src="https://d3js.org/d3.v6.min.js"></script>
<div id="view13"></div>
<script>
    data = [
        [10, 20], [20, 100], [200, 50],
        [25, 80], [10, 200], [150, 75],
        [10, 70], [30, 150], [100, 15]
    ]

    svg = d3.select("#view13")
        .append("svg")
        .attr("width", 250)
        .attr("height", 250)
        .attr("style", "border:1px solid red;")        
    svg.selectAll("circle")
        .data(data).enter()
        .append("circle")
        .attr("cx", function(d) {return d[0]})
        .attr("cy", function(d) {return d[1]})
        .attr("r", function(d) {
            return Math.sqrt(d[0]*d[0]+d[1]*d[1])/20
        })        
</script>

修改颜色

<script src="https://d3js.org/d3.v6.min.js"></script>
<div id="view14"></div>
<script>
    data = [
        [10, 20], [20, 100], [200, 50],
        [25, 80], [10, 200], [150, 75],
        [10, 70], [30, 150], [100, 15]
    ]

    svg = d3.select("#view14")
        .append("svg")
        .attr("width", 250)
        .attr("height", 250)
        .attr("style", "border:1px solid red;")        
    svg.selectAll("circle")
        .data(data).enter()
        .append("circle")
        .attr("cx", function(d) {return d[0]})
        .attr("cy", function(d) {return d[1]})
        .attr("r", function(d) {
            return Math.sqrt(d[0]*d[0]+d[1]*d[1])/20
        })
        .attr("fill", function(d) {
            return "rgb("+d[0]+","+d[1]+",0)"
        })    
</script>

增加标注文字

<script src="https://d3js.org/d3.v6.min.js"></script>
<div id="view15"></div>
<script>
    data = [
        [10, 20], [20, 100], [200, 50],
        [25, 80], [10, 200], [150, 75],
        [10, 70], [30, 150], [100, 15]
    ]

    svg = d3.select("#view15")
        .append("svg")
        .attr("width", 250)
        .attr("height", 250)
        .attr("style", "border:1px solid red;")        
    svg.selectAll("circle")
        .data(data).enter()
        .append("circle")
        .attr("cx", function(d) {return d[0]})
        .attr("cy", function(d) {return d[1]})
        .attr("r", function(d) {
            return Math.sqrt(d[0]*d[0]+d[1]*d[1])/20
        })
        .attr("fill", function(d) {
            return "rgb("+d[0]+","+d[1]+",0)"
        })

    // In addition to circles construction
    svg.selectAll("text")
        .data(data).enter()
        .append("text")
        .attr("x", function(d) {return d[0]+4})
        .attr("y", function(d) {return d[1]+4})
        .text(function(d) {return d[0] + ", " + d[1]})
        .attr("font-size", "10px")
</script>

关于代码运行效果

由于在简书上不能展示代码的运行结果,我在网上搭建了一个 jupyter notebook http://jupyter.cyber-life.cn/lab,我将本套教程的笔记和源代码写在了上面,可以在线查看代码运行效果,还可以调试代码,有需要的同学私信我。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 夜莺2517阅读 127,761评论 1 9
  • 我是黑夜里大雨纷飞的人啊 1 “又到一年六月,有人笑有人哭,有人欢乐有人忧愁,有人惊喜有人失落,有的觉得收获满满有...
    陌忘宇阅读 8,607评论 28 53
  • 兔子虽然是枚小硕 但学校的硕士四人寝不够 就被分到了博士楼里 两人一间 在学校的最西边 靠山 兔子的室友身体不好 ...
    待业的兔子阅读 2,653评论 2 9
  • 信任包括信任自己和信任他人 很多时候,很多事情,失败、遗憾、错过,源于不自信,不信任他人 觉得自己做不成,别人做不...
    吴氵晃阅读 6,231评论 4 8