آموزش رسم نمودار با Highcharts (جلسه 32) - نمودار ترکیبی - قسمت 2

دسته بندی: جاوا اسکریپت
زمان مطالعه: 9 دقیقه
۲۳ خرداد ۱۳۹۵

در این جلسه با ادامه موضوع مربوط به رسم نمودار با Highcharts در خدمتتون هستم. highcharts

نمونه دوم : نمودار ستونی و خطی دو محوره

در این نمونه میخایم یک نمونه نمودار رو در اختیارتون قرار بدیم که در اون علاوه بر اینکه انواع مختلف نمودارهای ستونی و خطی قرار داده شده، محورهای عمودی اون دو برابر شده و یک محور در سمت چپ و دیگری در سمت راست هست و هر کدوم مختص به ویژگی و شاخص معینی هست. کل کدهای مربوط به این نمونه رو در اختیارتون میزارم و بعد براتون توضیح میدم:

<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>
</head>

<body>
    <div id="container" style="width: 550px; height: 400px; margin: 0 auto"></div>
    <script language="JavaScript">
    $(document).ready(function() {
        var chart = {
            zoomType: 'xy'
        };
        var subtitle = {
            text: 'Source: WorldClimate.com'
        };
        var title = {
            text: 'Average Monthly Temperature and Rainfall in Tokyo'
        };
        var xAxis = {
            categories: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'],
            crosshair: true
        };
        var yAxis = [{ // Primary yAxis
            labels: {
                format: '{value}\xB0C',
                style: {
                    color: Highcharts.getOptions().colors[1]
                }
            },
            title: {
                text: 'Temperature',
                style: {
                    color: Highcharts.getOptions().colors[1]
                }
            }
        }, { // Secondary yAxis
            title: {
                text: 'Rainfall',
                style: {
                    color: Highcharts.getOptions().colors[0]
                }
            },
            labels: {
                format: '{value} mm',
                style: {
                    color: Highcharts.getOptions().colors[0]
                }
            },
            opposite: true
        }];
        var tooltip = {
            shared: true
        };
        var legend = {
            layout: 'vertical',
            align: 'left',
            x: 120,
            verticalAlign: 'top',
            y: 100,
            floating: true,
            backgroundColor: (Highcharts.theme && Highcharts.theme.legendBackgroundColor) || '#FFFFFF'
        };
        var series = [{
            name: 'Rainfall',
            type: 'column',
            yAxis: 1,
            data: [49.9, 71.5, 106.4, 129.2, 144.0, 176.0, 135.6, 148.5, 216.4, 194.1, 95.6, 54.4],
            tooltip: {
                valueSuffix: ' mm'
            }

        }, {
            name: 'Temperature',
            type: 'spline',
            data: [7.0, 6.9, 9.5, 14.5, 18.2, 21.5, 25.2, 26.5, 23.3, 18.3, 13.9, 9.6],
            tooltip: {
                valueSuffix: '\xB0C'
            }
        }];

        var json = {};
        json.chart = chart;
        json.title = title;
        json.subtitle = subtitle;
        json.xAxis = xAxis;
        json.yAxis = yAxis;
        json.tooltip = tooltip;
        json.legend = legend;
        json.series = series;
        $('#container').highcharts(json);
    });
    </script>
</body>

</html>

در ابتدا کدی بصورت زیر قرار داده شده:

var chart = {
   zoomType: 'xy'
};

با استفاده از این کد همونطور که قبلا توضیح داده بودیم، باعث میشیم که کاربر بتونه هم در جهت افقی و عمودی بزرگنمایی کنه و اطلاعات رو بهتر و بزرگتر ببینه.

var yAxis = [{ // Primary yAxis
   labels: {
       format: '{value}\xB0C',
       style: {
           color: Highcharts.getOptions().colors[1]
       }
   },
   title: {
       text: 'Temperature',
       style: {
           color: Highcharts.getOptions().colors[1]
       }
   }
}, { // Secondary yAxis
   title: {
       text: 'Rainfall',
       style: {
           color: Highcharts.getOptions().colors[0]
       }
   },
   labels: {
       format: '{value} mm',
       style: {
           color: Highcharts.getOptions().colors[0]
       }
   },
   opposite: true
}];

اصلی‌ترین قسمت این مطلب در کد بالا قرار داده شده و اونم اینه که برای محور عمودی، دو محور قرار داده شده و هر کدوم شاخص متفاوتی هست. میبینید که yAxis دارای دو عضو هست. عضو اول محور عمودی اول و عضو دوم، محور عمودی دوم رو مشخص میکنه. هر کدوم از محورها خودشون هم دارای ویژگی هایی هستن. با استفاده از ویژگی format، قالب اعدادی که بر روی محورها قرار داده میشن رو مشخص میکنیم و با استفاده از style هم رنگ اون رو مشخص میکنیم. با استفاده از ویژگی title هم عناوینی رو برای هر کدوم مشخص میکنیم. با استفاده از true قرار دادن ویژگی opposite، دو محور در یک سمت قرار نمیگیرن و یکی در سمت چپ و دیگری در سمت راست قرار میگیره.

var series = [{
   name: 'Rainfall',
   type: 'column',
   yAxis: 1,
   data: [49.9, 71.5, 106.4, 129.2, 144.0, 176.0, 135.6, 148.5, 216.4, 194.1, 95.6, 54.4],
   tooltip: {
       valueSuffix: ' mm'
   }

}, {
   name: 'Temperature',
   type: 'spline',
   data: [7.0, 6.9, 9.5, 14.5, 18.2, 21.5, 25.2, 26.5, 23.3, 18.3, 13.9, 9.6],
   tooltip: {
       valueSuffix: '\xB0C'
   }
}];

درون متغیر Series هم داده هایی که قراره در نمودار نمایش داده بشن رو قرار میدیم. میبینید که دو دسته قرار داده شده و هر کدوم از اونا type و نوع متفاوتی دارن. اولی از نوع ستونی و دومی از نوع spline هست. درون ویژگی data هم مقادیر مورد نظر خودمون رو قرار دادیم. خروجی بصورت زیر خواهد بود:combination dual axes

امیدوارم از این مطلب خوشتون اومده باشه.

موفق و پیروز باشید

یا علی

Source

چه امتیازی به این مقاله می دید؟
نویسنده محمد اسفندیاری
بسیار به طراحی وب علاقمندم و به سرعت در حال یادگیری تمام مباحث پیشرفته هستم و دوست دارم که به دیگران هم یاد بدهم.

جلسات دوره

نظرات کاربران

اولین دیدگاه این پست رو تو بنویس !

نیاز به لاگین

برای ارسال دیدگاه و یا پرسیدن سوال خود در این قسمت، باید در سایت لاگین شوید.