<span id="mktg5"></span>

<i id="mktg5"><meter id="mktg5"></meter></i>

        <label id="mktg5"><meter id="mktg5"></meter></label>
        最新文章專題視頻專題問答1問答10問答100問答1000問答2000關鍵字專題1關鍵字專題50關鍵字專題500關鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關鍵字專題關鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
        問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
        當前位置: 首頁 - 科技 - 知識百科 - 正文

        D3.js(v3)+react 實現(xiàn)帶坐標與比例尺的柱形圖 (V3版本)

        來源:懂視網 責編:小采 時間:2020-11-27 21:57:20
        文檔

        D3.js(v3)+react 實現(xiàn)帶坐標與比例尺的柱形圖 (V3版本)

        D3.js(v3)+react 實現(xiàn)帶坐標與比例尺的柱形圖 (V3版本):現(xiàn)在用D3.js + react做一個帶坐標軸和比例尺的柱形圖。我已經盡力把代碼全部注釋上了,最后我也會把完整柱形圖代碼奉上。如果還有疑惑的,可以去翻看一下我之前介紹的方法,以下方法都有介紹到。 還有數(shù)據(jù)都是自己定義的假數(shù)據(jù),大家參考一下制作方法即可。
        推薦度:
        導讀D3.js(v3)+react 實現(xiàn)帶坐標與比例尺的柱形圖 (V3版本):現(xiàn)在用D3.js + react做一個帶坐標軸和比例尺的柱形圖。我已經盡力把代碼全部注釋上了,最后我也會把完整柱形圖代碼奉上。如果還有疑惑的,可以去翻看一下我之前介紹的方法,以下方法都有介紹到。 還有數(shù)據(jù)都是自己定義的假數(shù)據(jù),大家參考一下制作方法即可。

        現(xiàn)在用D3.js + react做一個帶坐標軸和比例尺的柱形圖。我已經盡力把代碼全部注釋上了,最后我也會把完整柱形圖代碼奉上。如果還有疑惑的,可以去翻看一下我之前介紹的方法,以下方法都有介紹到。

        還有數(shù)據(jù)都是自己定義的假數(shù)據(jù),大家參考一下制作方法即可。

        首先定義柱形圖的數(shù)據(jù)、繪圖區(qū)域的寬高、和上下左右的邊距:

        var width = 600; //SVG繪制區(qū)域的寬度
         var height = 500; //SVG繪制區(qū)域的高度
         //定義數(shù)據(jù)
         var dataList = [50,43,120,87,99,167,142]
         //定義上下左右的邊距
         var padding = {top:20,right:20,bottom:100,left:100}

        然后設定SVG:

         var svg = d3.select("#body") //選擇id為body的div
         .append("svg") //在<body>中添加<avg> .attr("width",width) //設定<svg>的寬度屬性
         .attr("height",height) //設定<svg>的高度屬性

        定義比例尺:

        //定義比例尺
         //x軸寬度
         var xAxisWidth = 300;
         //y軸寬度
         var yAxisWidth = 300;
        
         //x軸比例尺(序數(shù)比例尺)
         var xScale = d3.scale.ordinal() //構建一個序數(shù)比例尺
         .domain(d3.range(dataList.length)) //設定定義域
         .rangeRoundBands([0,xAxisWidth],0.2)//代替range()設定值域,并將結果取整
         //y軸比例尺(線性比例尺)
         var yScale = d3.scale.linear() //創(chuàng)建一個線性比例尺
         .domain([0,d3.max(dataList)]) //設定定義域
         .range([0,yAxisWidth]) //設定值域

        然后添加矩形:

        //添加矩形
         svg.selectAll("rect")
         .data(dataList) //綁定數(shù)據(jù)
         .enter() //獲取enter部分
         .append("rect") //添加rect元素,使其與綁定數(shù)組的長度一致
         .attr("fill","fuchsia") //設置顏色
         .attr("x",function(d,i){ //設置矩形的x坐標
         return padding.left+xScale(i)
         })
         .attr("y",function(d){ //設置矩形的y坐標
         return height - padding.bottom-yScale(d)
         })
         .attr("width",xScale.rangeBand()) //設置矩形的寬度
         .attr("height",function(d){ //設置矩形的高度
         return yScale(d)
         })

        然后為矩形添加文字標簽:

        //為矩形添加標簽文字
         svg.selectAll("text")
         .data(dataList) //綁定數(shù)據(jù)
         .enter() //獲取enter部分
         .append("text") //添加text元素,使其與綁定數(shù)組的長度一致
         .attr("fill","white") //字體顏色
         .attr("font-size","14px") //字體大小
         .attr("text-anchor","middle") //文本相對基點的位置
         .attr("x",function(d,i){ //設置文字的x坐標
         return padding.left+xScale(i)
         }) 
         .attr("y",function(d){ //設置文字的y坐標
         return height - padding.bottom - yScale(d)
         })
         .attr("dx",xScale.rangeBand()/2) //相對于當前位置在x方向上平移的距離 
         .attr("dy","2em") //相對于當前位置在y方向上平移的距離
         .text(function(d){ //文字內容
         return d
         })

        最后定義坐標軸:

        //定義坐標軸
         //x軸
         var xAxis = d3.svg.axis() //創(chuàng)建一個默認的新坐標軸 
         .scale(xScale) //設定坐標軸的比例尺
         .orient("bottom") //設定坐標軸的方向
         //重新設置y軸比例尺的值域,與原來的相反
         yScale.range([yAxisWidth,0])
         //y軸
         var yAxis = d3.svg.axis() //創(chuàng)建一個默認的新坐標軸 
         .scale(yScale) //設定坐標軸的比例尺
         .orient("left") //設定坐標軸的方向
         
         //添加x軸和平移
         svg.append("g") //在svg中添加一個包含坐標軸各元素的g元素
         .attr("class","axis") //定義class名
         .attr("transform","translate("+padding.left + "," + (height-padding.bottom)+")") //將x軸進行平移
         .call(xAxis) //將自身作為參數(shù)傳遞給xAxis函數(shù)
         //添加y軸和平移
         svg.append("g") //在svg中添加一個包含坐標軸各元素的g元素
         .attr("class","axis") //定義class名
         .attr("transform","translate("+padding.left+","+(height-padding.bottom-yAxisWidth)+")") //將y軸進行平移
         .call(yAxis) //將自身作為參數(shù)傳遞給yAxis函數(shù)

        大家看一下效果圖:

        完整代碼:

        import React, { Component } from 'react';
        import * as d3 from 'd3'; //引入d3
        class Bar extends Component {
         constructor(props) {
         super(props);
         this.state = {}
         }
        
         componentDidMount(){ //將方法在componentDidMount生命周期鉤子函數(shù)中面調用
         this.oneMethod()
         }
         oneMethod(){
         var width = 600; //SVG繪制區(qū)域的寬度
         var height = 500; //SVG繪制區(qū)域的高度
         //定義數(shù)據(jù)
         var dataList = [50,43,120,87,99,167,142]
         //定義上下左右的邊距
         var padding = {top:20,right:20,bottom:100,left:100}
         var svg = d3.select("#body") //選擇id為body的div
         .append("svg") //在<body>中添加<avg>
         .attr("width",width) //設定<svg>的寬度屬性
         .attr("height",height) //設定<svg>的高度屬性
         //定義比例尺
         //x軸寬度
         var xAxisWidth = 300;
         //y軸寬度
         var yAxisWidth = 300;
         //x軸比例尺(序數(shù)比例尺)
         var xScale = d3.scale.ordinal() //構建一個序數(shù)比例尺
         .domain(d3.range(dataList.length)) //設定定義域
         .rangeRoundBands([0,xAxisWidth],0.2)//代替range()設定值域,并將結果取整
         //y軸比例尺(線性比例尺)
         var yScale = d3.scale.linear() //創(chuàng)建一個線性比例尺
         .domain([0,d3.max(dataList)]) //設定定義域
         .range([0,yAxisWidth]) //設定值域
         //添加矩形
         svg.selectAll("rect")
         .data(dataList) //綁定數(shù)據(jù)
         .enter() //獲取enter部分
         .append("rect") //添加rect元素,使其與綁定數(shù)組的長度一致
         .attr("fill","fuchsia") //設置顏色
         .attr("x",function(d,i){ //設置矩形的x坐標
         return padding.left+xScale(i)
         })
         .attr("y",function(d){ //設置矩形的y坐標
         return height - padding.bottom-yScale(d)
         })
         .attr("width",xScale.rangeBand()) //設置矩形的寬度
         .attr("height",function(d){ //設置矩形的高度
         return yScale(d)
         })
         //為矩形添加標簽文字
         svg.selectAll("text")
         .data(dataList) //綁定數(shù)據(jù)
         .enter() //獲取enter部分
         .append("text") //添加text元素,使其與綁定數(shù)組的長度一致
         .attr("fill","white") //字體顏色
         .attr("font-size","14px") //字體大小
         .attr("text-anchor","middle") //文本相對基點的位置
         .attr("x",function(d,i){ //設置文字的x坐標
         return padding.left+xScale(i)
         }) 
         .attr("y",function(d){ //設置文字的y坐標
         return height - padding.bottom - yScale(d)
         })
         .attr("dx",xScale.rangeBand()/2) //相對于當前位置在x方向上平移的距離 
         .attr("dy","2em") //相對于當前位置在y方向上平移的距離
         .text(function(d){ //文字內容
         return d
         })
         //定義坐標軸
         //x軸
         var xAxis = d3.svg.axis() //創(chuàng)建一個默認的新坐標軸 
         .scale(xScale) //設定坐標軸的比例尺
         .orient("bottom") //設定坐標軸的方向
         //重新設置y軸比例尺的值域,與原來的相反
         yScale.range([yAxisWidth,0])
         //y軸
         var yAxis = d3.svg.axis() //創(chuàng)建一個默認的新坐標軸 
         .scale(yScale) //設定坐標軸的比例尺
         .orient("left") //設定坐標軸的方向
         //添加x軸和平移
         svg.append("g") //在svg中添加一個包含坐標軸各元素的g元素
         .attr("class","axis") //定義class名
         .attr("transform","translate("+padding.left + "," + (height-padding.bottom)+")") //將x軸進行平移
         .call(xAxis) //將自身作為參數(shù)傳遞給xAxis函數(shù)
         //添加y軸和平移
         svg.append("g") //在svg中添加一個包含坐標軸各元素的g元素
         .attr("class","axis") //定義class名
         .attr("transform","translate("+padding.left+","+(height-padding.bottom-yAxisWidth)+")") //將y軸進行平移
         .call(yAxis) //將自身作為參數(shù)傳遞給yAxis函數(shù)
         }
         
         render() {
         return (
         <div id="body" >
         </div>
         );
         }
        }
        export default Bar;

        總結

        以上所述是小編給大家介紹的D3.js(v3)+react 實現(xiàn)帶坐標與比例尺的柱形圖 (V3版本),希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對腳本之家網站的支持!
        如果你覺得本文對你有幫助,歡迎轉載,煩請注明出處,謝謝!

        聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯(lián)系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

        文檔

        D3.js(v3)+react 實現(xiàn)帶坐標與比例尺的柱形圖 (V3版本)

        D3.js(v3)+react 實現(xiàn)帶坐標與比例尺的柱形圖 (V3版本):現(xiàn)在用D3.js + react做一個帶坐標軸和比例尺的柱形圖。我已經盡力把代碼全部注釋上了,最后我也會把完整柱形圖代碼奉上。如果還有疑惑的,可以去翻看一下我之前介紹的方法,以下方法都有介紹到。 還有數(shù)據(jù)都是自己定義的假數(shù)據(jù),大家參考一下制作方法即可。
        推薦度:
        標簽: 坐標 柱形圖 d3.js
        • 熱門焦點

        最新推薦

        猜你喜歡

        熱門推薦

        專題
        Top
        主站蜘蛛池模板: 亚洲欧洲专线一区| 亚洲国产精品日韩在线| 精品国产日韩亚洲一区91| 日本亚洲免费无线码| 亚洲国产品综合人成综合网站| 小日子的在线观看免费| 亚洲AV无码码潮喷在线观看| 成人免费无码H在线观看不卡| 国产成人亚洲精品影院| 久久免费香蕉视频| 国产亚洲精品国产| 8x成人永久免费视频| 亚洲激情视频网站| 久久精品国产99精品国产亚洲性色| 精品无码一级毛片免费视频观看| 区三区激情福利综合中文字幕在线一区亚洲视频1 | 亚洲bt加勒比一区二区| 国产精品永久免费10000| 亚洲国产成人精品无码区在线秒播| 美女被cao免费看在线看网站| 亚洲乱码中文字幕小综合| 成人毛片免费观看视频大全| 亚洲av成人一区二区三区在线播放| 免费一级毛片一级毛片aa| 精品久久久久久国产免费了| 久久久久久亚洲精品| ww4545四虎永久免费地址| 国产精品亚洲专区无码唯爱网 | 在线观看亚洲免费视频| 尤物视频在线免费观看| 亚洲一级二级三级不卡| 成人超污免费网站在线看| 黄色a级片免费看| 久久久久久亚洲av成人无码国产| 免费阿v网站在线观看g| 另类图片亚洲校园小说区| 自拍偷自拍亚洲精品被多人伦好爽| 亚洲成人免费网站| 特a级免费高清黄色片| 99ri精品国产亚洲| 免费国产美女爽到喷出水来视频|