<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??碼云GVP開源項目 12k star Uniapp+ElementUI 功能強大 支持多語言、二開方便! 廣告
                ## 準備數據(CSV格式) ``` year,month,average 2020,8,22.15 2020,9,72.52 2020,10,82.53 2020,11,90.45 2020,12,92.65 2021,1,100.71 2021,2,102.21 2021,3,111.44 2021,4,121.41 2021,5,132.55 2021,6,132.55 2021,7,132.55 2021,8,132.55 2021,9,132.55 2021,10,132.55 2021,11,132.55 2021,12,132.55 ``` ## 加載 CSV 數據 ``` //定義svg的寬和高 var w = 800; var h = 300; // 加載數據,并轉換數據 d3.csv("/shop/visual/pathData", d => { return { date: new Date(+d.year, (+d.month - 1)), average: parseFloat(d.average) }; }).then(function (dataset) { console.table(dataset, ['date', 'average']); } ``` ![](https://img.kancloud.cn/ba/fc/bafc05bcfed1e19d8fdca17232afe9e4_585x220.png) ## 定義用于橫坐標的時間比例尺 ``` xScale = d3.scaleTime() .domain([ d3.min(dataset, function (d) { return d.date; }), d3.max(dataset, function (d) { return d.date; }) ]) .range([0, w]); ``` 上面求最大值和最小值的方法可以簡寫。 ``` .domain(d3.extent(dataset, d=>d.date)) ``` ## 建立線性縱坐標 ``` //縱坐標 yScale = d3.scaleLinear() .domain(d3.extent(dataset, d => d.average)) .range([h, 0]); ``` ## 定義線條生成器 ``` //定義線條生成器 line = d3.line() .defined(function (d) { return d.average >= 0 && d.average <= 100; }) //過濾數據,只繪制0-100間的數據 .x(function (d) { return xScale(d.date); }) .y(function (d) { return yScale(d.average); }); //定義危險區域的線條生成器 dangerLine = d3.line() .defined(function (d) { return d.average >= 100; }) //過濾數據,只繪制不小于100的數據 .x(function (d) { return xScale(d.date) }) .y(function (d) { return yScale(d.average) }) ``` 如果想讓折線變成區域,只需修改一個方法`d3.area()`即可。后面的章節后講到。 ## 提供樣式表 ``` <style type="text/css"> .line { fill: none; stroke: teal; stroke-width: 0.5; } .danger { stroke: red; } </style> ``` 下面是完整的d3代碼 ``` //定義svg的寬和高 var w = 800; var h = 500; //留白 var padding = 40; // 加載數據,并轉換數據 d3.csv("/shop/visual/pathData", d => { return { date: new Date(+d.year, (+d.month - 1)), average: parseFloat(d.average) }; }).then(function (dataset) { //橫坐標 xScale = d3.scaleTime() .domain(d3.extent(dataset, d => d.date)) .range([padding, w - padding]); //縱坐標 yScale = d3.scaleLinear() .domain(d3.extent(dataset, d => d.average)) .range([h - padding, padding]); //定義線條生成器 line = d3.line() .defined(function (d) { return d.average >= 0 && d.average <= 100; }) //過濾數據,只繪制0-100間的數據 .x(function (d) { return xScale(d.date); }) .y(function (d) { return yScale(d.average); }); //定義危險區域的線條生成器 dangerLine = d3.line() .defined(function (d) { return d.average >= 100; }) //過濾數據,只繪制不小于100的數據 .x(function (d) { return xScale(d.date) }) .y(function (d) { return yScale(d.average) }) var svg = d3.select("body") .append("svg") .attr("width", w) .attr("height", h); svg.append("path") .datum(dataset) .attr("class", "line") .attr("d", line); svg.append("path") .datum(dataset) .attr("class", "line danger") .attr('d', dangerLine); }); ``` 下面給出瀏覽器的效果圖。 ![](https://img.kancloud.cn/9a/3e/9a3e1163416c95a6599b00accc23a2e5_771x472.png)
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看