در این جلسه با ادامه موضوع مربوط به رسم نمودار با Highcharts در خدمتتون هستم.
نمونه اول : نمودار درختی ساده
در این نمونه میخایم یک نمونه نمودار رو در اختیارتون قرار بدیم دادهها در اون بصورت درختی یا Tree map نمایش داده میشن. باید از این نوع نمودارها زیاد دیده باشید، برای دیدن نمودارهای بیشتر میتونین این لینکو ببینید. کل کدهای مربوط به این نمونه رو در اختیارتون میزارم و بعد براتون توضیح میدم:
<html> <head> <title>Highcharts Tutorial</title> <script src="http://ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js"></script> <script src="http://code.highcharts.com/highcharts.js"></script> <script src="http://code.highcharts.com/modules/treemap.js"></script> <script src="http://code.highcharts.com/modules/heatmap.js"></script> </head> <body> <div id="container" style="width: 550px; height: 400px; margin: 0 auto"></div> <script language="JavaScript"> $(document).ready(function() { var title = { text: 'Highcharts Treemap' }; var colorAxis = { minColor: '#FFFFFF', maxColor: Highcharts.getOptions().colors[0] }; var series = [{ type: "treemap", layoutAlgorithm: 'squarified', data: [{ name: 'A', value: 6, colorValue: 1 }, { name: 'B', value: 6, colorValue: 2 }, { name: 'C', value: 4, colorValue: 3 }, { name: 'D', value: 3, colorValue: 4 }, { name: 'E', value: 2, colorValue: 5 }, { name: 'F', value: 2, colorValue: 6 }, { name: 'G', value: 1, colorValue: 7 }] }]; var json = {}; json.title = title; json.colorAxis = colorAxis; json.series = series; $('#container').highcharts(json); }); </script> </body> </html>
میبینید که علاوه بر فایل اصلی Highchart، فایلهای treemap.js و heatmap.js قرار داده شده است. فایل heatmap.js رو به این دلیل وارد کردیم که بتونیم با استفاده از اون از قدرت رنگها و همچنین نوار رنگی راهنمای پایین نمودار بهره ببریم.
میبینید که در ابتدا کدی بصورت زیر قرار داده شده:
var colorAxis = { minColor: '#FFFFFF', maxColor: Highcharts.getOptions().colors[0] };
با استفاده از این کد نوار رنگی راهنمایی که در پایین نمودار قرار داره رو تنظیم کردیم و گفتیم که از یک رنگ سفید تا یک رنگ تقریبا آبی بصورت گرادیانی تغییر کنه.
var series = [{ type: "treemap", layoutAlgorithm: 'squarified', data: [{ name: 'A', value: 6, colorValue: 1 }, { name: 'B', value: 6, colorValue: 2 }, { name: 'C', value: 4, colorValue: 3 }, { name: 'D', value: 3, colorValue: 4 }, { name: 'E', value: 2, colorValue: 5 }, { name: 'F', value: 2, colorValue: 6 }, { name: 'G', value: 1, colorValue: 7 }] }];
اصلیترین کد این نمونه در بالا قرار داده شده و میبینید که نوع نمودار برابر با درختی یا treemap قرار داده شده و ویژگی layoutAlgorithm برابر با squarified قرار داده شده. این ویژگی مقادیر دیگه ای رو هم دریافت میکنه که در نمونههای بعدی اونا رو خواهید دید. با استفاده از این ویژگی میتونین الگوریتم قالب بندی و کنار هم قرار گرفتن بلاکها رو مشخص کنید. همونطور که میبینید و از اسم ویژگی squarified هم معلومه اونا رو تا جای ممکن بصورت مربع نمایش میده. میبینید که درون ویژگی Data مقادیر مختلف قرار داده شده و برای هر کدام از دستهها یک value یا مقدار قرار داده شده. این نمودار در ابتدا همه این مقادیر رو با هم جمع میکنه و بعد از اون بصورت درصدی هر کدوم از دستهها رو نشون میده و هر چه مقدار یک دسته بزرگتر باشه، مقدار بیشتری از نمودار به اون دسته اختصاص داده میشه. خروجی بصورت زیر خواهد بود:
نمونه دوم : نمودار درختی سطح دار
در نمونه قبل با یک نمودار درختی ساده آشنا شدید. در این نمونه میخایم یک نمودار رو در اختیارتون قرار بدم که در اون هر کدوم از دستهها زیر مجموعه دسته دیگری هست و نمودار بصورت لایه لایه ای و سطح دار هست. کل کدهای مربوط به این نمونه رو در اختیارتون میزارم و بعد براتون توضیح میدم:
<html> <head> <title>Highcharts Tutorial</title> <script src="http://ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js"></script> <script src="http://code.highcharts.com/highcharts.js"></script> <script src="http://code.highcharts.com/modules/treemap.js"></script> <script src="http://code.highcharts.com/modules/heatmap.js"></script> </head> <body> <div id="container" style="width: 550px; height: 400px; margin: 0 auto"></div> <script language="JavaScript"> $(document).ready(function() { var title = { text: 'Fruit consumption' }; var series = [{ type: "treemap", layoutAlgorithm: 'stripes', alternateStartingDirection: true, levels: [{ level: 1, layoutAlgorithm: 'sliceAndDice', dataLabels: { enabled: true, align: 'left', verticalAlign: 'top', style: { fontSize: '15px', fontWeight: 'bold' } } }], data: [{ id: 'A', name: 'Apples', color: "#EC2500" }, { id: 'B', name: 'Bananas', color: "#ECE100" }, { id: 'O', name: 'Oranges', color: '#EC9800' }, { name: 'Anne', parent: 'A', value: 5 }, { name: 'Rick', parent: 'A', value: 3 }, { name: 'Peter', parent: 'A', value: 4 }, { name: 'Anne', parent: 'B', value: 4 }, { name: 'Rick', parent: 'B', value: 10 }, { name: 'Peter', parent: 'B', value: 1 }, { name: 'Anne', parent: 'O', value: 1 }, { name: 'Rick', parent: 'O', value: 3 }, { name: 'Peter', parent: 'O', value: 3 }, { name: 'Susanne', parent: 'Kiwi', value: 2, color: '#9EDE00' }] }]; var json = {}; json.title = title; json.series = series; $('#container').highcharts(json); }); </script> </body> </html>
کد اصلی این نمونه در زیر قرار داده شده:
var series = [{ type: "treemap", layoutAlgorithm: 'stripes', alternateStartingDirection: true, levels: [{ level: 1, layoutAlgorithm: 'sliceAndDice', dataLabels: { enabled: true, align: 'left', verticalAlign: 'top', style: { fontSize: '15px', fontWeight: 'bold' } } }], data: [{ id: 'A', name: 'Apples', color: "#EC2500" }, { id: 'B', name: 'Bananas', color: "#ECE100" }, { id: 'O', name: 'Oranges', color: '#EC9800' }, { name: 'Anne', parent: 'A', value: 5 }, { name: 'Rick', parent: 'A', value: 3 }, { name: 'Peter', parent: 'A', value: 4 }, { name: 'Anne', parent: 'B', value: 4 }, { name: 'Rick', parent: 'B', value: 10 }, { name: 'Peter', parent: 'B', value: 1 }, { name: 'Anne', parent: 'O', value: 1 }, { name: 'Rick', parent: 'O', value: 3 }, { name: 'Peter', parent: 'O', value: 3 }, { name: 'Susanne', parent: 'Kiwi', value: 2, color: '#9EDE00' }] }];
همونطور که میبینید نوع این نمودار در ابتدا برابر با درختی قرار داده شده و ویژگی layoutAlgorithm اون برابر با stripes قرار داده شده. با این کار نمودار بصورت راه راه افقی نمایش داده میشه. میبینید که درون ویژگی levels یکبار دیگه فقط برای سطح اول و ابتدایی نوع قالب بندی رو برابر با sliceAndDice قرار داده. درون ویژگی data هم دسته مقادیر متفاوتی قرار داده شده و به اونایی که در سطح اول هستن یک id داده شده و به بقیه که در این موارد قرار میگیرن، با استفاده از خصوصیت parent به عنصری که میخان درونش قرار بگیره، آدرس میدن. خروجی بصورت زیر خواهد بود:
امیدوارم از این مطلب خوشتون اومده باشه.
موفق و پیروز باشید
یا علی
اولین دیدگاه این پست رو تو بنویس !