D3临摹作业(西安交大国家艺术基金数据可视化培训第17天)

第三章 D3数据可视化基础
 

第一节 D3可视化API概述
      


1 定义
         D3.js是一个JavaScript库,可以通过使用HTML、SVG和CSS把数据鲜活形象地展现出来。
         wiki:D3.js由Mike Bostock[MikeBostock2010][MikeBostock2011]在provis基础上开发的。
       
 2 地位:
        GIthub上前端API排行第二(仅次于bootstrap)库,他比Processing简单,比Echarts自由,此外他是开源软件。源码、中文手册托管在Github上。

3 基本功能
    8个模块:
    操作流程:加载数据-->绑定数据-->变换数据-->布局方式-->过渡元素

4 D3开发环境
   软件下载:在http://d3js.org/下载最新版本的D3.js
 软件加载:

<script src="https://d3js.org/d3.v5.min.js"></script>

  本地使用:

<script type="text/javascript" src="d3.v3.min.js" charset="UTF-8"></script>

第二节 D3数据绑定
 

 语法案例
选择函数select
selectAll
d3.select("p")
d3.select("#namei")
d3.select(".namei")

var namei=ducument.getElementById("namei");
d3.select("namei")
选择集selection.attr(name[,value])
selection.classed(name[,value])
selection.style(name[,value])
selection.text([value])

selection.append(name)
selection.insert(name[,before])
selection.remove()
 
数据绑定datum([value])
data([values[,key]])
 

案例:一个简单的批量绑定
 

<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="utf-8">
        <title>D3.js简介</title>
        <!--
        <script src="https://d3js.org/d3.v5.min.js"></script>
        -->
        <script type="text/javascript" src="d3.min.js" charset="UTF-8"></script>
    </head>

    <body>
    <p>数据可视化培训</p>
    <p>古都西安</p>    

    <script type="text/javascript">      
       var temp=d3.selectAll("p"); //选择所有的 p元素
       dataset=["国家艺术基金","2019年6月"];
       temp.data(dataset)         //绑定数组
           .text(function(d,i){   //修改元素内容,function为自定义函数
                return "NO." + i + ":" +d  //返回字符串

            });
            console.log(temp);
    </script>
    </body>
</html>

第三节 D3直方图
案例:

<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="utf-8">
        <title>D3.js绘制直方图</title>
        <!--
        <script src="https://d3js.org/d3.v5.min.js"></script>
        -->
        <script type="text/javascript" src="d3.min.js" charset="UTF-8"></script>
    </head>

    <body>
    
    <script type="text/javascript">      
        //设置窗口和尺寸
        var w =(window.innerWidth 
        || document.documentElement.clientWidth
        || document.body.clientWidth)*0.98;

        var h =(window.innerHeight
        || document.documentElement.clientHeight
        || document.body.clientHeight)*0.9; 

        //绘制10个矩形
       var dataset=new Array(10);       
       for(var i=0;i<10;i++){
            dataset[i]=500*Math.random();
       }
       
       var svg=d3.select("body")    //选择body
                 .append("svg")     //添加svg到body
                 .attr("width",w)   //设置svg的宽、高
                 .attr("height",h); 

       /* svg.append("rect")           //添加rect元素
          .attr("x",0)              //设置矩形的x、y坐标
          .attr("y",0)
          .attr("width",100)        //设置矩形的宽度、高度、颜色等
          .attr("height",400)
          .attr("fill","blue");
        */
       svg.selectAll("rect")        //选择所有的rect元素
          .data(dataset)            //绑定数据
          .enter()                  //获取enter部分
          .append("rect")           //添加rect元素
          .attr("x",function(d,i){   //设置矩形的x坐标偏移,i为下标
                return i*(w/dataset.length);
          })                        
          .attr("y",function(d){     //设置矩形的y坐标偏移,i为下标
                return h-d;
          })
          .attr("width",(w/dataset.length-10))  //设置矩形的宽度偏移,i为下标
                                
          .attr("height",function(d){  //设置矩形的高度偏移
                return d;
          })
          .attr("fill","blue");

    </script>
    </body>
</html>

第四节 Json文件格式
一 Json概述

1 概念与特点

  • JSON 指的是 JavaScript 对象表示法(JavaScript Object Notation)
  • JSON 是轻量级的文本数据交换格式
  • JSON 独立于语言 *
  • JSON 具有自我描述性,更易理解
  • 对于 AJAX 应用程序来说,JSON 比 XML 更快更易使用:

2  JSON 语法规则

  数据在名称/值对中 、数据由逗号分隔、花括号保存对象、方括号保存数组

 JSON 使用 JavaScript 语法,所以无需额外的软件就能处理 JavaScript 中的 JSON。
var employees = [
{ "firstName":"Bill" , "lastName":"Gates" },
{ "firstName":"Thomas" , "lastName": "Carter" }
];
可以像这样访问 JavaScript 对象数组中的第一项:employees[0].lastName;

案例:代码来源:W3School
<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="utf-8">
        <title>D3.js——在 JavaScript 中创建 JSON 对象</title>
        <!--
        <script src="https://d3js.org/d3.v5.min.js"></script>
        -->
        <script type="text/javascript" src="d3.min.js" charset="UTF-8"></script>
    </head>

    <body>
        <h2>在 JavaScript 中创建 JSON 对象</h2>

        <p>
            Name: <span id="jname"></span><br />
            Age: <span id="jage"></span><br />
            Address: <span id="jstreet"></span><br />
            Phone: <span id="jphone"></span><br />
        </p>

        <script type="text/javascript">
            var JSONObject= {
            "name":"Bill Gates",
            "street":"Fifth Avenue New York 666",
            "age":56,
            "phone":"555 1234567"};

            document.getElementById("jname").innerHTML=JSONObject.name
            document.getElementById("jage").innerHTML=JSONObject.age
            document.getElementById("jstreet").innerHTML=JSONObject.street
            document.getElementById("jphone").innerHTML=JSONObject.phone
        </script>

    </body>
</html>

3 JSON编辑器

小工具很多:json在线  在线校验解析格式化JSON工具

二 Json的使用

1 把 JSON 文本转换为 JavaScript 对象
 JSON 最常见的用法之一,是从 web 服务器上读取 JSON 数据,通过JavaScript 函数 eval() 转换为 JavaScript 对象,然后在网页中使用该数据。
var txt = '{ "employees" : [' + '{ "firstName":"Bill" , "lastName":"Gates" },' + '{ "firstName":"George" , "lastName":"Bush" },' + '{ "firstName":"Thomas" , "lastName":"Carter" } ]}';
var obj = eval ("(" + txt + ")");

2 D3读取并解析JSON

{
    "name": "莲花朵朵",
    "url": "http://www.csdn.com",
    "address": {
        "street": "西安交通大学.",
        "city": "陕西西安",
        "country": "中国"
    },
    "links": [
        {
            "name": "Google",
            "url": "http://www.google.com"
        },
        {
            "name": "Baidu",
            "url": "http://www.baidu.com"
        }
    ]
}
<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="utf-8">
        <title>D3.j读json文件</title>
        <!--
        <script src="https://d3js.org/d3.v5.min.js"></script>
        -->
        <script type="text/javascript" src="../D3/d3.v5.min.js" charset="UTF-8"></script>
    </head>

    
    <body>
        <p>节点信息</p>
        <script type="text/javascript">
            var mydata;
            d3.json("test.json",function(error,data){
                console.log(data.nodes);
                //myFunction();
            });

        </script>

    </body>
</html>

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值