D3.js - Axis API

D3 มีฟังก์ชันในการวาดแกน แกนทำจากเส้นเห็บและป้ายกำกับ แกนใช้มาตราส่วนดังนั้นแต่ละแกนจะต้องได้รับมาตราส่วนเพื่อใช้งานได้

การกำหนดค่า Axis API

คุณสามารถกำหนดค่า API โดยใช้สคริปต์ต่อไปนี้

<script src = "https://d3js.org/d3-axis.v1.min.js"></script>
<script>

</script>

วิธีการของ Axis API

D3 มีฟังก์ชันที่สำคัญต่อไปนี้ในการวาดแกน มีการอธิบายโดยสังเขปดังนี้

  • d3.axisTop() - วิธีนี้ใช้เพื่อสร้างแกนนอนด้านบน

  • d3.axisRight() - วิธีนี้ใช้เพื่อสร้างแกนแนวตั้งทางขวา

  • d3.axisBottom() - วิธีนี้ใช้เพื่อสร้างแกนนอนด้านล่าง

  • d3.axisLeft() - สร้างแกนแนวตั้งด้านซ้าย

ตัวอย่างการทำงาน

ให้เราเรียนรู้วิธีเพิ่มแกน x และแกน y ลงในกราฟ ในการดำเนินการนี้เราต้องปฏิบัติตามขั้นตอนที่ระบุด้านล่าง

Step 1 - Define variables - กำหนด SVG และตัวแปรข้อมูลโดยใช้โค้ดด้านล่าง

var width = 400, height = 400;
var data = [100, 150, 200, 250, 280, 300];
var svg = d3.select("body")
   .append("svg")
   .attr("width", width)
   .attr("height", height);

Step 2 - Create a scale linear function - สร้างฟังก์ชันเชิงเส้นขนาดสำหรับทั้งแกน x และ y ตามที่กำหนดไว้ด้านล่าง

var xscale = d3.scaleLinear()
   .domain([0, d3.max(data)])
   .range([0, width - 100]);

var yscale = d3.scaleLinear()
   .domain([0, d3.max(data)])
   .range([height/2, 0]);

ที่นี่เราได้สร้างสเกลเชิงเส้นและระบุโดเมนและช่วง

Step 3 - Add scales to x-axis - ตอนนี้เราสามารถเพิ่มสเกลให้กับแกน x โดยใช้รหัสต่อไปนี้

var x_axis = d3.axisBottom()
   .scale(xscale);

ที่นี่เราใช้ d3.axisBottom เพื่อสร้างแกน x ของเราและจัดเตรียมมาตราส่วนซึ่งกำหนดไว้ก่อนหน้านี้

Step 4 - Add scales to the y-axis - ใช้รหัสต่อไปนี้เพื่อเพิ่มมาตราส่วนให้กับแกน y

var y_axis = d3.axisLeft()
   .scale(yscale);

ที่นี่เราใช้ d3.axisLeft เพื่อสร้างแกน y ของเราและจัดเตรียมมาตราส่วนที่เรากำหนดไว้ข้างต้น

Step 5 - Apply transformation - คุณสามารถต่อท้ายองค์ประกอบกลุ่มและแทรกแกน x, y ซึ่งกำหนดไว้ด้านล่าง

svg.append("g")
   .attr("transform", "translate(50, 10)")
   .call(y_axis);

Step 6 - Append group elements - ใช้องค์ประกอบการเปลี่ยนแปลงและกลุ่มโดยใช้รหัสต่อไปนี้

var xAxisTranslate = height/2 + 10;
svg.append("g")
   .attr("transform", "translate(50, " + xAxisTranslate  +")")
   .call(x_axis)

Step 7 - Working Example- รายการรหัสที่สมบูรณ์จะได้รับในบล็อกรหัสต่อไปนี้ สร้างเว็บเพจaxes.html และเพิ่มการเปลี่ยนแปลงต่อไปนี้

<html>
   <head>
      <script type = "text/javascript" src = "https://d3js.org/d3.v4.min.js"></script>
      <style>
         svg text {
            fill: purple;
            font: 12px sans-serif;
            text-anchor: end;
         }
      </style>
   </head>

   <body>
      <script>
         var width = 400, height = 400;
         var data = [100, 120, 140, 160, 180, 200];
         var svg = d3.select("body")
            .append("svg")
            .attr("width", width)
            .attr("height", height);
         
         var xscale = d3.scaleLinear()
            .domain([0, d3.max(data)])
            .range([0, width - 100]);
         
         var yscale = d3.scaleLinear()
            .domain([0, d3.max(data)])
            .range([height/2, 0]);
    
         var x_axis = d3.axisBottom().scale(xscale);
         
         var y_axis = d3.axisLeft().scale(yscale);
         
         svg.append("g")
            .attr("transform", "translate(50, 10)")
            .call(y_axis);
         
         var xAxisTranslate = height/2 + 10;
         
         svg.append("g")
            .attr("transform", "translate(50, " + xAxisTranslate  +")")
            .call(x_axis)
      </script>
   </body>
</html>

ตอนนี้ขอเบราว์เซอร์แล้วเราจะเห็นการเปลี่ยนแปลงต่อไปนี้