zoukankan      html  css  js  c++  java
  • d3.js 数据操作

    <!DOCTYPE html>
    <html lang="en">
    <head>
      <meta charset="UTF-8">
      <meta name="viewport" content="width=device-width, initial-scale=1.0">
      <meta http-equiv="X-UA-Compatible" content="ie=edge">
      <title>d3 数据操作</title>
      <script src="https://d3js.org/d3.v5.min.js"></script>
      <style>
        #mainsvg {
          margin: 50px 200px;
        }
      </style>
    </head>
    <body>
      <!-- 
        https://blog.mn886.net/chenjianhua/show/773c07b3abce/index.html
        根据此问内容进行实操
       -->
       <p><a href="https://blog.mn886.net/chenjianhua/show/773c07b3abce/index.html" target="_blank">https://blog.mn886.net/chenjianhua/show/773c07b3abce/index.html</a>根据此问内容进行实操</p>
      <svg id="mainsvg" width="1000" height="600"></svg>
    
      <script>
        const svg = d3.select('#mainsvg')
        const width = +svg.attr('width')
        const height = +svg.attr('height')
        const margin = {left: 200, top: 50, right: 50, bottom: 50}
        const innerWidth = width - margin.left - margin.right
        const innerHeight = height - margin.top - margin.bottom
    
        let data = [3, 2, 3, 6, 7, 1, 4, 5]
        let data1 = [
          {
            num: 2,
            name: '11'
          },
          {
            num: 5,
            name: '1'
          },
          {
            num: 1,
            name: '2'
          },
          {
            num: 3,
            name: '5'
          },
        ]
        
        data.sort(d3.ascending)
        console.log('升序排序函数:', data)
    
    
        data.sort(d3.descending)
        console.log('降序排序函数:', data)
    
    
        let max = d3.max(data)
        console.log('数组中最大值:', max)
    
        let min = d3.min(data)
        console.log('数组中最小值:', min)
    
        let range = d3.extent(data) // 返回数组
        console.log('获取数组范围(最小值和最大值):', range)
    
        let sum = d3.sum(data)
        console.log('获取数组中数字总和:', sum)
        
        let mean = d3.mean(data)
        console.log('获取数组中数字的算术平均值:', mean)
            
        let median = d3.median(data)
        console.log('获取数组中数字的中位数 (相当于 0.5-quantile的值):', median)
        
        const purples = [
          'purple1',
          'purple2',
          'purple3',
          'purple4',
          'purple5'
        ]
        const dataset = [1, 1, 1, 1, 2, 3, 4]
    
        const bisect = d3.bisect(dataset, 1);
        console.log('用來尋找某值對應一個陣列資料內的正確位置或最接近的位置:', bisect);
    
        
        const bisectRight = d3.bisectRight(dataset, 1);
        console.log('可以找出1插入的話,並插入資料源的右側,會位於第3個:', bisectRight);
    
        const bisectLeft = d3.bisectLeft(dataset, 1);
        console.log('可以找出1插入的話,並插入資料源的左側,會位於第1個。:', bisectLeft);
    
        d3.shuffle(data)
        console.log('随机排序:', data)
    
        d3.permute(data, 2)
        console.log('以指定顺序排列数组中的元素:', data)
    
    
        let data2 = d3.zip(data, dataset)
        console.log('将多个数组合并成一个数组的数组,新数组的的第i个元素是原来各个数组中第i个元素组成的数组:', data2)
    
        
        
        let data3 = d3.transpose(d3.zip(data, dataset))
        console.log('矩阵转置,通过d3.zip实现:', data3)
    
        
        let data4 = d3.pairs(data)
        console.log('返回临近元素对的数组:', data4)
    
        
        let data5 = d3.keys(data)
        console.log('返回关联数组(哈希表、json、object对象)的key组成的数组:', data5)
    
        
        let data6 = d3.values(data)
        console.log('返回关联数组(哈希表、json、object对象)的value组成的数组:', data6)
        
        let data9 = d3.entries({foo: 11})
        console.log('返回关联数组的key-value实体组成的数组:', data9)
        
        let data7 = d3.merge([[1,2], [8]])
        console.log('将多个数组连成一个:', data7)
        
        let data8 = d3.range(1,8)
        console.log('获得一个数列:', data8)
    
        
        let data10 = d3.nest().key(d => d).entries(data)
        console.log('获得一个nest对象,将数组组织成层级结构:', data10)
        // nest.key 为nest层级结构增加一个层级.
        // nest.sortKeys 将当前的nest层级结构按key排序
        // nest.sortValues 将叶nest层级按value排序
        // nest.rollup  设置修改叶节点值的函数
        // nest.map 执行nest操作, 返回一个关联数组(json)
        // nest.entries 执行nest操作, 返回一个key-value数组. 如果nest.map返回的结果类似于{ foo: 42 }, 则nest.entries返回的结果类似于[{key: "foo", value: 42}]
        let data11 = d3.nest().map(data)
        console.log('sortKeys--map', data11)
        let data12 = d3.nest().entries(data)
        console.log('sortKeys--entries', data12)
        
        // 将javascript的object转化为hash,屏蔽了object的原型链功能导致的与hash不一致的问题。
    
        // map有某个key就返回true.
        let data13 = d3.map({a: 5}).has('a')
        console.log('map-has', data13)
        
        // 返回map中某个key对应的value.
        let data14 = d3.map({a: 5}).get('a')
        console.log('map-get', data14)
        
        // 设置map中某个key对应的value.
        let data15 = d3.map({a: 5}).set('b', 7)
        console.log('map-set', data15)
        
        // 删除map中的某个key.
        let temp1 = {a: 5,c:2}
        let data16 = d3.map(temp1).remove('a')
        console.log('map-remove', data16, temp1)
    
        // 返回map中所有entry(key-value键值对)组成的数组
        let data17 = d3.map(temp1).entries()
        console.log('map-entries', data17)
    
        // 对map中每一个entry执行某个函数.
        d3.map(temp1).entries().forEach(d => {console.log('map-forEach:',d);})
        console.log(temp1)
    
        // 返回map中所有key组成的数组.
        let data18 = d3.map(temp1).keys()
        console.log('map-keys', data18)
        
        // 返回map中所有value组成的数组.
        let data19 = d3.map(temp1).values()
        console.log('map-keys', data19)
    
        // d3.set
        // 将javascript的array转化为set,屏蔽了array的object原型链功能导致的与set不一致的问题。set中的value是array中每个值转换成字符串的结果。set中的value是去重过的。
        let temp2 = [2, 7, 8, 3, 4, 5, 2, 3, 8, 7]
        // 返回set中是否含有某个value.
        let data20 = d3.set(temp2).has(2)
        console.log('set-has', data20, temp2)
    
        // 添加某个value.
        let data21 = d3.set(temp2).add(9)
        console.log('set-add', data21, temp2)
        
        // 删除某个value.
        let data22 = d3.set(temp2).remove(2)
        console.log('set-remove', data22, temp2)
        
        // 返回set中的值组成的数组.set中的value是去重过的.
        let data23 = d3.set(temp2).values()
        console.log('set-values', data23, temp2)
        
        
      </script>
    </body>
    </html>

    d3常用数据处理方法

  • 相关阅读:
    LODOP中用ADD_PRINT_IMAGE缩放非图片超文本
    LODOP关联,打印项序号注意事项
    LODOP在页面让客户选择打印机
    【JS新手教程】LODOP打印复选框选中的任务或页数
    映美FP-530K+打印发票的各种经验
    【JS新手教程】LODOP打印复选框选中的内容
    LODOP和C-LODOP注册与角色等简短问答【增强版】
    【JS新手教程】弹出两层div,及在LODOP内嵌上层
    LODOP内嵌挡住浏览器的div弹出层
    【JS新手教程】浏览器弹出div层1
  • 原文地址:https://www.cnblogs.com/wlgwilianm123/p/14144635.html
Copyright © 2011-2022 走看看