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>
ตอนนี้ขอเบราว์เซอร์แล้วเราจะเห็นการเปลี่ยนแปลงต่อไปนี้