D3.js - ข้อมูลเบื้องต้นเกี่ยวกับ SVG
SVG ย่อมาจาก Scalable Vector Graphics. SVG เป็นรูปแบบกราฟิกเวกเตอร์ที่ใช้ XML มันมีตัวเลือกในการวาดรูปทรงต่างๆเช่นเส้นสี่เหลี่ยมวงกลมวงรี ฯลฯ ดังนั้นการออกแบบการแสดงภาพด้วย SVG จึงให้พลังและความยืดหยุ่นมากขึ้น
คุณสมบัติของ SVG
คุณสมบัติเด่นบางประการของ SVG มีดังนี้ -
- SVG เป็นรูปแบบภาพที่ใช้เวกเตอร์และเป็นแบบข้อความ
- SVG มีโครงสร้างคล้ายกับ HTML
- SVG สามารถแสดงเป็นไฟล์ Document object model.
- คุณสมบัติ SVG สามารถระบุเป็นแอตทริบิวต์
- SVG ควรมีตำแหน่งที่แน่นอนที่สัมพันธ์กับจุดเริ่มต้น (0, 0)
- SVG สามารถรวมได้ตามที่อยู่ในเอกสาร HTML
ตัวอย่างขั้นต่ำ
ให้เราสร้างภาพ SVG ขั้นต่ำและรวมไว้ในเอกสาร HTML
Step 1 - สร้างภาพ SVG และตั้งค่าความกว้างเป็น 300 พิกเซลและสูงเป็น 300 พิกเซล
<svg width = "300" height = "300">
</svg>
ที่นี่ svgแท็กเริ่มต้นรูปภาพ SVG และมีความกว้างและความสูงเป็นแอตทริบิวต์ หน่วยเริ่มต้นของรูปแบบ SVG คือpixel.
Step 2 - สร้างบรรทัดเริ่มต้นที่ (100, 100) และสิ้นสุดที่ (200, 100) และกำหนดสีแดงสำหรับเส้น
<line x1 = "100" y1 = "100" x2 = "200" y2 = "200"
style = "stroke:rgb(255,0,0);stroke-width:2"/>
ที่นี่ line แท็กวาดเส้นและแอตทริบิวต์ x1, y1 หมายถึงจุดเริ่มต้นและ x2, y2หมายถึงจุดสิ้นสุด แอตทริบิวต์ style กำหนดสีและความหนาของเส้นโดยใช้stroke และ stroke-width รูปแบบ
x1 - นี่คือพิกัด x ของจุดแรก
y1 - นี่คือพิกัด y ของจุดแรก
x2 - นี่คือพิกัด x ของจุดที่สอง
y2 - นี่คือพิกัด y ของจุดที่สอง
stroke - สีของเส้น
stroke-width - ความหนาของเส้น
Step 3 - สร้างเอกสาร HTML“ svg_line.html” และรวม SVG ด้านบนดังที่แสดงด้านล่าง -
<!DOCTYPE html>
<html>
<head>
<script type = "text/javascript" src = "https://d3js.org/d3.v4.min.js"></script>
<style>
body { font-family: Arial; }
</style>
</head>
<body>
<div id = "svgcontainer">
<svg width = "300" height = "300">
<line x1 = "100" y1 = "100"
x2 = "200" y2 = "200" style = "stroke:rgb(255,0,0);
stroke-width:2"/>
</svg>
</div>
<p></p>
<p></p>
</body>
</html>
โปรแกรมข้างต้นจะให้ผลลัพธ์ดังต่อไปนี้
SVG โดยใช้ D3.js
ในการสร้าง SVG โดยใช้ D3.js ให้เราทำตามขั้นตอนด้านล่าง
Step 1 - สร้างคอนเทนเนอร์เพื่อเก็บภาพ SVG ตามที่ระบุด้านล่าง
<div id = "svgcontainer"></div>
Step 2- เลือกคอนเทนเนอร์ SVG โดยใช้เมธอด select () และฉีดองค์ประกอบ SVG โดยใช้เมธอด append () เพิ่มแอตทริบิวต์และสไตล์โดยใช้เมธอด attr () และ style ()
var width = 300;
var height = 300;
var svg = d3.select("#svgcontainer")
.append("svg").attr("width", width).attr("height", height);
Step 3 - ในทำนองเดียวกันให้เพิ่มไฟล์ line องค์ประกอบภายใน svg องค์ประกอบดังที่แสดงด้านล่าง
svg.append("line")
.attr("x1", 100)
.attr("y1", 100)
.attr("x2", 200)
.attr("y2", 200)
.style("stroke", "rgb(255,0,0)")
.style("stroke-width", 2);
รหัสที่สมบูรณ์มีดังนี้ -
<!DOCTYPE html>
<html>
<head>
<script type = "text/javascript" src = "https://d3js.org/d3.v4.min.js"></script>
<style>
body { font-family: Arial; }
</style>
</head>
<body>
<div id = "svgcontainer">
</div>
<script language = "javascript">
var width = 300;
var height = 300;
var svg = d3.select("#svgcontainer")
.append("svg")
.attr("width", width)
.attr("height", height);
svg.append("line")
.attr("x1", 100)
.attr("y1", 100)
.attr("x2", 200)
.attr("y2", 200)
.style("stroke", "rgb(255,0,0)")
.style("stroke-width", 2);
</script>
</body>
</html>
โค้ดด้านบนให้ผลลัพธ์ดังต่อไปนี้
องค์ประกอบสี่เหลี่ยมผืนผ้า
รูปสี่เหลี่ยมผืนผ้าแสดงด้วย <rect> tag ตามที่แสดงด้านล่าง
<rect x = "20" y = "20" width = "300" height = "300"></rect>
คุณสมบัติของสี่เหลี่ยมผืนผ้ามีดังนี้ -
x - นี่คือพิกัด x ของมุมบนซ้ายของสี่เหลี่ยมผืนผ้า
y - นี่คือพิกัด y ของมุมบนซ้ายของสี่เหลี่ยมผืนผ้า
width - หมายถึงความกว้างของสี่เหลี่ยมผืนผ้า
height - นี่แสดงถึงความสูงของสี่เหลี่ยมผืนผ้า
สี่เหลี่ยมผืนผ้าธรรมดาใน SVG ถูกกำหนดตามที่อธิบายไว้ด้านล่าง
<svg width = "300" height = "300">
<rect x = "20" y = "20" width = "300" height = "300" fill = "green"></rect>
</svg>
สี่เหลี่ยมผืนผ้าเดียวกันสามารถสร้างได้แบบไดนามิกตามที่อธิบายไว้ด้านล่าง
<!DOCTYPE html>
<html>
<head>
<script type = "text/javascript" src = "https://d3js.org/d3.v4.min.js"></script>
</head>
<body>
<div id = "svgcontainer"></div>
<script>
var width = 300;
var height = 300;
//Create SVG element
var svg = d3.select("#svgcontainer")
.append("svg")
.attr("width", width)
.attr("height", height);
//Create and append rectangle element
svg.append("rect")
.attr("x", 20)
.attr("y", 20)
.attr("width", 200)
.attr("height", 100)
.attr("fill", "green");
</script>
</body>
</html>
รหัสด้านบนจะให้ผลลัพธ์ดังต่อไปนี้
องค์ประกอบวงกลม
วงกลมแสดงโดย <circle> ตามคำอธิบายด้านล่าง
<circle cx = "200" cy = "50" r = "20"/>
คุณสมบัติของวงกลมมีดังนี้ -
cx - นี่คือพิกัด x ของจุดศูนย์กลางของวงกลม
cy - นี่คือพิกัด y ของจุดศูนย์กลางของวงกลม
r - นี่แสดงถึงรัศมีของวงกลม
วงกลมธรรมดาใน SVG มีคำอธิบายไว้ด้านล่าง
<svg width = "300" height = "300">
<circle cx = "200" cy = "50" r = "20" fill = "green"/>
</svg>
คุณสามารถสร้างแวดวงเดียวกันได้แบบไดนามิกตามที่อธิบายไว้ด้านล่าง
<!DOCTYPE html>
<html>
<head>
<script type = "text/javascript" src = "https://d3js.org/d3.v4.min.js"></script>
</head>
<body>
<div id = "svgcontainer"></div>
<script>
var width = 300;
var height = 300;
//Create SVG element
var svg = d3.select("#svgcontainer")
.append("svg")
.attr("width", width)
.attr("height", height);
//Append circle
svg.append("circle")
.attr("cx", 200)
.attr("cy", 50)
.attr("r", 20)
.attr("fill", "green");
</script>
</body>
</html>
รหัสด้านบนจะให้ผลลัพธ์ดังต่อไปนี้
องค์ประกอบวงรี
องค์ประกอบ SVG Ellipse แสดงโดย <ellipse> ตามคำอธิบายด้านล่าง
<ellipse cx = "200" cy = "50" rx = "100" ry = "50"/>
คุณลักษณะของวงรีมีดังนี้ -
cx - นี่คือพิกัด x ของจุดศูนย์กลางของวงรี
cy - นี่คือพิกัด y ของจุดศูนย์กลางของวงรี
rx - นี่คือรัศมี x ของวงกลม
ry - นี่คือรัศมี y ของวงกลม
วงรีง่ายๆใน SVG มีอธิบายไว้ด้านล่าง
<svg width = "300" height = "300">
<ellipse cx = "200" cy = "50" rx = "100" ry = "50" fill = "green" />
</svg>
สามารถสร้างวงรีเดียวกันแบบไดนามิกดังต่อไปนี้
<html>
<head>
<script type = "text/javascript" src = "https://d3js.org/d3.v4.min.js"></script>
</head>
<body>
<div id = "svgcontainer"></div>
<script>
var width = 300;
var height = 300;
var svg = d3.select("#svgcontainer")
.append("svg")
.attr("width", width)
.attr("height", height);
svg.append("ellipse")
.attr("cx", 200)
.attr("cy", 50)
.attr("rx", 100)
.attr("ry", 50)
.attr("fill", "green")
</script>
</body>
</html>
รหัสด้านบนจะให้ผลลัพธ์ดังต่อไปนี้