با عرض سلام و وقت بخیر خدمت کاربران سایت پی وی لرن ، جلسه دیگری از آموزش های دوره D3.js را با مفهوم SVG در D3.js آغاز می کنیم. SVG مخفف عبارت Scalable Vector Graphics می باشد. SVG یک فرمت گرافیکی بردار مبتنی بر XML است. که گزینه هایی برای رسم اشکال مختلف مانند خطوط، عنصر مستطیل در SVG ، حلقه ها، خط ها و … را فراهم می کند. بنابراین، طراحی تصویری با SVG به شما قدرت و انعطاف بیشتری می دهد.
برای درک مفهوم SVG در D3.js ابتدا از معرفی ویژگی های SVG شروع می کنیم.
برخی از ویژگی های مهم SVG عبارتند از:
اجازه دهید یک تصویر کوچک SVG ایجاد کنیم و آن را در سند HTML قرار دهیم.
مرحله ۱ : ایجاد یک تصویر SVG و تنظیم عرض به اندازه ۳۰۰ پیکسل و ارتفاع به اندازه ۳۰۰ پیکسل.
1 2 3 | <svg width = "300" height = "300"> </svg> |
در این مثال، تگ svg یک تصویر SVG را ایجاد می کند و دارای ویژگی های عرض و ارتفاع است. واحد پیش فرض قالب SVG پیکسل است.
مرحله ۲ : یک خط شروع از (۱۰۰، ۱۰۰) و پایان دادن به (۲۰۰، ۱۰۰) و ایجاد رنگ قرمز برای خط ایجاد کنید.
1 2 | <line x1 = "100" y1 = "100" x2 = "200" y2 = "200" style = "stroke:rgb(255,0,0);stroke-width:2"/> |
در اینجا تگ خط( line) خط و ویژگی های آن را ترسیم می کند.x1، y1 به نقطه شروع و x2، y2 به نقطه پایانی اشاره دارد. ویژگی سبک، رنگ و ضخامت خط را با استفاده از stroke و سبک stroke-width تنظیم می کند.
مرحله ۳ :
یک سند HTML ایجاد کنید،“svg_line.html” و SVG بالا را به صورت زیر بسازید.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | <!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 همانطور که در زیر داده شده است.
1 | <div id = "svgcontainer"></div> |
مرحله ۲ : محتویات SVG را با استفاده از متد ()select انتخاب کنید و عنصر SVG را با استفاده از متد ()append اضافه کنید. با استفاده از متد های ()attr و() style صفات و سبک ها را اضافه کنید.
1 2 3 4 | var width = 300; var height = 300; var svg = d3.select("#svgcontainer") .append("svg").attr("width", width).attr("height", height); |
مرحله ۳ : به طور مشابه، عنصر خط (line) را داخل عنصر svg همانطور که در زیر نشان داده شده اضافه کنید.
1 2 3 4 5 6 7 | 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); |
کد کامل شده به صورت زیر می باشد.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | <!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> به صورت زیر نشان داده می شود :
1 | <rect x = "20" y = "20" width = "300" height = "300"></rect> |
ویژگی های عنصر مستطیل در SVG عبارت است از:
یک مستطیل در SVG به شرح زیر تعریف شده است.
1 2 3 | <svg width = "300" height = "300"> <rect x = "20" y = "20" width = "300" height = "300" fill = "green"></rect> </svg> |
همان مستطیل را می توان به صورت پویا مانند زیر ایجاد کرد :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | <!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> به صورت زیر ایجاد می شود.
1 | <circle cx = "200" cy = "50" r = "20"/> |
صفات دایره به شرح زیر است:
یک دایره ساده در SVG در زیر شرح داده شده است.
1 2 3 | <svg width = "300" height = "300"> <circle cx = "200" cy = "50" r = "20" fill = "green"/> </svg> |
همان دایره را نیز می توان به صورت پویا ایجاد کرد، همانطور که در زیر توضیح داده شده است.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | <!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> به صورت زیر شرح داده شده است.
1 | <ellipse cx = "200" cy = "50" rx = "100" ry = "50"/> |
صفات یک بیضی به شرح زیر است:
cx:مختصات x از مرکز بیضی است.
cy :مختصات y از مرکز بیضی است.
rx : شعاع x دایره است.
ry : شعاع y دایره است.
یک بیضی ساده در SVG در زیر شرح داده شده است.
1 2 3 | <svg width = "300" height = "300"> <ellipse cx = "200" cy = "50" rx = "100" ry = "50" fill = "green" /> </svg> |
همان بیضی را می توان به صورت پویا به صورت زیر ساخت.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | <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> |
کد بالا خروجی زیر را ایجاد می کند :
امیدوارم مفهوم SVG در D3.js برای شما کاربران عزیز قابل قبول بوده باشد.تاکید D3 بر استانداردهای وب، قابلیت های کامل مرورگرهای مدرن را به شما می دهد بدون اینکه نیاز باشد به یک چارچوب خاصی وصل شوید ،همچنین امکان ترکیب اجزای بصری قدرتمند و رسم Visualization های پر قدرت را به شما می دهد.