美文网首页
可视化D3.js库(7)-坐标轴的使用

可视化D3.js库(7)-坐标轴的使用

作者: 皮皮大 | 来源:发表于2020-05-18 18:47 被阅读0次

D3.js库-7-添加坐标轴

坐标轴是可视化图表中经常出现的一种图形,由一些刻度和线列段组成。D3中是没有现成的坐标轴,SVG中因而没有现成的图形元素,需要通过D3提供的其他组件来手动添加。下图是添加了坐标轴之后的效果图。

image 坐标轴+刻度尺

坐标轴构成

在SVG画布的预定义元素中,有6种基本的图形:

  • 矩形

  • 圆形

  • 椭圆

  • 线段

  • 折线

  • 多边形

还有一种特殊的元素就是:路径path

几乎画布中的所有图形都是由以上7种元素构成的。上述元素中没有坐标轴,采用类似的定义方式:将axis看做是一个标签,x1、x2等看做是它的一个个属性

<axis x1="" x2="">...</axis>

分组元素g

由于没有上述的元素,需要其他的元素来组合构成类似的形式:

<g>
    <!--第一个刻度-->
<g>
    <line></line>   <!--第一个刻度的直线-->
    <text></text>   <!--第一个刻度的文字-->
</g>
<g>
    <line></line>   <!--第二个刻度的直线-->
    <text></text>   <!--第二个刻度的文字-->
</g>
...
    <!--坐标轴的轴线-->
    <path></path>
</g>

分组元素是SVG画布中的元素,意思就是group,是将其他元素进行组合和分组存放。D3中提供了一个组件能够自动添加:d3.svg.axis()

每个分组g看做是一个刻度值和线段组成的group

定义一个坐标轴

定义一个坐标轴需要使用上一篇文章中使用的比例尺。它们二者经常是一起使用的。

// 定义数据
const dateset = [80,160,20,100,300]
// 定义一个线性比例尺
const scaleLinear = d3.scaleLinear()
                        .domain([0, d3.max(dataset)])  // 映射区间
                        .range([0,250]);

const axis = d3.axisBottom(scaleLinear)  // 定义向下的坐标轴
                .ticks(7);  // 坐标轴上的刻度数

g.append("g")  // 追加足够多的g元素
    .attr("transform","translate(" + 30 + (dataset.length * rectHeight) + ")")  // 设置位置信息
    .call(axis)   // 定义的比例尺本身就是函数,需要进行回调

柱状图加上坐标轴

下面是完整的代码

<!DOCTYPE html>
<html>

  <head>
    <title>添加坐标轴</title>
    <meta charset="utf-8">
    <script type="text/javascript" src="http://d3js.org/d3.v5.min.js">
    </script>
  </head>

  <body>
    <svg width="960" height="600"></svg>      
    <script>

        // 定义画布的边框和给定数据
        var marge = {top:60, bottom:60, left:60, right:60};
        var dataset = [80, 160, 20, 100, 300];

        // 定义一个线性比例尺
        var scaleLinear = d3.scaleLinear()
                            .domain([0,d3.max(dataset)])
                            .range([0,300]);

        // 定义每个分组元素
        var svg = d3.select("svg");
        var g = svg.append("g")
                    .attr("transform", "translate(" + marge.top + "," + marge.left + ")");
            
        // 定义每个矩形的像素
        var rectHeight = 25;


        // 每个g元素的属性进行设置
        g.selectAll("rect")   // 选择所有的矩形元素并绑定数据
            .data(dataset)
            .enter()
            .append("rect")   // 追加元素
            .attr("x", 20)
            .attr("y", function(d, i){
                return i * rectHeight;
            })
            .attr("width",function(d){
                return scaleLinear(d);
            })
            .attr("height", rectHeight - 5)
            .attr("fill", "blue");
        
        // 为坐标轴定义一个线性比例尺
        var xScale = d3.scaleLinear()
                        .domain([0,d3.max(dataset)])  // 定义范围
                        .range([0, 300]);
        
        // 定义一个坐标轴
        var xAxis = d3.axisBottom(xScale)   // 向下的坐标轴
                        .ticks(7);  // 刻度数为7

        g.append("g")
            .attr("transform","translate(" + 20 + "," +(dataset.length * rectHeight) + ")")  // 设置位置信息
            .call(xAxis);   // 将定义的坐标轴进行回调
    </script>
  </body>
</html>

相关文章

  • 可视化D3.js库(7)-坐标轴的使用

    D3.js库-7-添加坐标轴 坐标轴是可视化图表中经常出现的一种图形,由一些刻度和线列段组成。D3中是没有现成的坐...

  • 数据可视化的一些学习

    数据可视化各类常用的javascript库 D3.js ECharts G2 Hightchart Dygraph...

  • 揭开数据可视化的神秘面纱

    数据可视化,特别是基于Web的数据可视化的时代已经到来了。类似JavaScript的可视化库如D3.js,Raph...

  • Echarts的基本操作

    Echarts-介绍 常见的数据可视化库: D3.js 目前 Web 端评价最高的 Javascript 可视...

  • README.md

    tigerChart tigerChart 是基于d3.js数据可视化库的javascript组件可用于绘制分时图...

  • 精通D3.js:交互式数据可视化高级编程.epub

    【下载地址】 《精通D3.js:交互式数据可视化高级编程》以当前流行的数据可视化技术D3.js为主要内容,分为三大...

  • D3.js核心概念

    D3.js是一个JavaScript的函数库,主要用来做数据可视化。 本节内容介绍了选择集、动态属性、enter、...

  • d3

    d3js D3 (或者叫 D3.js )是一个基于 web 标准的 JavaScript 可视化库. D3 可以借...

  • D3.js 入门教程

    D3.js 入门教程(连载) 近年来,可视化越来越流行,许多报刊杂志、门户网站、新闻媒体都大量使用可视化技术,使得...

  • 使用d3.js实现的数据可视化,但tableau会是更好的选择

    这个使用d3.js的数据可视化,是在去年年底完成的一个项目,呈现在web上的数据可视化,都会有更好的交互性,事实上...

网友评论

      本文标题:可视化D3.js库(7)-坐标轴的使用

      本文链接:https://www.haomeiwen.com/subject/auepohtx.html