آموزش رسم نمودار با Highcharts (جلسه 9) - نمودارهای خطی - قسمت 5

‏  21 دقیقه
۲۸ اردیبهشت ۱۳۹۵

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

نمونه هفتم : نمودار spline با محورهای معکوس

در این جلسه یک نمودار spline نوارهای افقی رو در اختیارتون قرار میدم که با استفاده از این نوارها محور عمودی رو به بازه گوناگونی دسته بندی کرده و برای هر کدوم عنوانی رو مشخص میکنیم. در ابتدا کل کدهای این نمودار رو قرار میدیم تا اونا رو ببینید:

<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 = {
            type: 'spline'
        };
        var title = {
            text: 'Wind speed during two days'
        };
        var subtitle = {
            text: 'October 6th and 7th 2009 at two locations in Vik i Sogn, Norway'
        };
        var xAxis = {
            type: 'datetime',
            labels: {
                overflow: 'justify'
            }
        };
        var yAxis = {
            title: {
                text: 'Wind speed (m/s)'
            },
            min: 0,
            minorGridLineWidth: 0,
            gridLineWidth: 0,
            alternateGridColor: null,
            plotBands: [{ // Light air
                from: 0.3,
                to: 1.5,
                color: 'rgba(68, 170, 213, 0.1)',
                label: {
                    text: 'Light air',
                    style: {
                        color: '#606060'
                    }
                }
            }, { // Light breeze
                from: 1.5,
                to: 3.3,
                color: 'rgba(0, 0, 0, 0)',
                label: {
                    text: 'Light breeze',
                    style: {
                        color: '#606060'
                    }
                }
            }, { // Gentle breeze
                from: 3.3,
                to: 5.5,
                color: 'rgba(68, 170, 213, 0.1)',
                label: {
                    text: 'Gentle breeze',
                    style: {
                        color: '#606060'
                    }
                }
            }, { // Moderate breeze
                from: 5.5,
                to: 8,
                color: 'rgba(0, 0, 0, 0)',
                label: {
                    text: 'Moderate breeze',
                    style: {
                        color: '#606060'
                    }
                }
            }, { // Fresh breeze
                from: 8,
                to: 11,
                color: 'rgba(68, 170, 213, 0.1)',
                label: {
                    text: 'Fresh breeze',
                    style: {
                        color: '#606060'
                    }
                }
            }, { // Strong breeze
                from: 11,
                to: 14,
                color: 'rgba(0, 0, 0, 0)',
                label: {
                    text: 'Strong breeze',
                    style: {
                        color: '#606060'
                    }
                }
            }, { // High wind
                from: 14,
                to: 15,
                color: 'rgba(68, 170, 213, 0.1)',
                label: {
                    text: 'High wind',
                    style: {
                        color: '#606060'
                    }
                }
            }]
        };
        var tooltip = {
            valueSuffix: ' m/s'
        };
        var plotOptions = {
            spline: {
                lineWidth: 4,
                states: {
                    hover: {
                        lineWidth: 5
                    }
                },
                marker: {
                    enabled: false
                },
                pointInterval: 3600000, // one hour
                pointStart: Date.UTC(2009, 9, 6, 0, 0, 0)
            }
        };
        var series = [{
            name: 'Vik i Sogn',
            data: [4.3, 5.1, 4.3, 5.2, 5.4, 4.7, 3.5, 4.1, 5.6, 7.4, 6.9, 7.1,
                7.9, 7.9, 7.5, 6.7, 7.7, 7.7, 7.4, 7.0, 7.1, 5.8, 5.9, 7.4,
                8.2, 8.5, 9.4, 8.1, 10.9, 10.4, 10.9, 12.4, 12.1, 9.5, 7.5,
                7.1, 7.5, 8.1, 6.8, 3.4, 2.1, 1.9, 2.8, 2.9, 1.3, 4.4, 4.2,
                3.0, 3.0
            ]
        }, {
            name: 'Norway',
            data: [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.1, 0.0, 0.3, 0.0,
                0.0, 0.4, 0.0, 0.1, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
                0.0, 0.6, 1.2, 1.7, 0.7, 2.9, 4.1, 2.6, 3.7, 3.9, 1.7, 2.3,
                3.0, 3.3, 4.8, 5.0, 4.8, 5.0, 3.2, 2.0, 0.9, 0.4, 0.3, 0.5, 0.4
            ]
        }];
        var navigation = {
            menuItemStyle: {
                fontSize: '10px'
            }
        }

        var json = {};
        json.chart = chart;
        json.title = title;
        json.subtitle = subtitle;
        json.tooltip = tooltip;
        json.xAxis = xAxis;
        json.yAxis = yAxis;
        json.series = series;
        json.plotOptions = plotOptions;
        json.navigation = navigation;
        $('#container').highcharts(json);

    });
    </script>
</body>

</html>

همونطور که دیدید در ابتدا نوع نمودار برابر با spline قرار گرفته است. بیشتر تنظیمات این نمودار همانند نمودارهای قبلی هست. تنها قسمتی که تمرکز ما بیشتر روی اون هست تنظیمات مربوط به yAxis هست. این تنظیمات بصورت زیر هستند:

var yAxis = {
   title: {
      text: 'Wind speed (m/s)'
   },
   min: 0,
   minorGridLineWidth: 0,
   gridLineWidth: 0,
   alternateGridColor: null,
   plotBands: [{ // Light air
      from: 0.3,
      to: 1.5,
      color: 'rgba(68, 170, 213, 0.1)',
      label: {
         text: 'Light air',
         style: {
            color: '#606060'
         }
      }
   }, { // Light breeze
      from: 1.5,
      to: 3.3,
      color: 'rgba(0, 0, 0, 0)',
      label: {
         text: 'Light breeze',
         style: {
            color: '#606060'
         }
      }
   }, { // Gentle breeze
      from: 3.3,
      to: 5.5,
      color: 'rgba(68, 170, 213, 0.1)',
      label: {
         text: 'Gentle breeze',
         style: {
            color: '#606060'
         }   
      }
   }, { // Moderate breeze
      from: 5.5,
      to: 8,
      color: 'rgba(0, 0, 0, 0)',
      label: {
         text: 'Moderate breeze',
         style: {
            color: '#606060'
         }
      }
   }, { // Fresh breeze
      from: 8,
      to: 11,
      color: 'rgba(68, 170, 213, 0.1)',
      label: {
         text: 'Fresh breeze',
         style: {
            color: '#606060'
         }
      }
   }, { // Strong breeze
      from: 11,
      to: 14,
      color: 'rgba(0, 0, 0, 0)',
      label: {
         text: 'Strong breeze',
         style: {
            color: '#606060'
         }
      }   
   }, { // High wind
      from: 14,
      to: 15,
      color: 'rgba(68, 170, 213, 0.1)',
      label: {
         text: 'High wind',
         style: {
            color: '#606060'
         }
      }
   }]
};

میبینید که در ابتدا عنوان محور عمودی مشخص شده و بعد از اون حداقل مقدار محور عمودی با استفاده از ویژگی min برابر 0 در نظر گرفته شده. ضخامت گریدها رو برابر با 0 قرار داده و با اینکار نمایش داده نمیشن. با استفاده از plotBands میتونین نوارهای افقی رو مشخص کنید و قرار بدین. همونطور که میبینید این ویژگی بصورت یک آرایه هست و برای هر عضو این آرایه یک شئ یا object قرار داده میشه و خصوصیات اون رو مشخص میکنه. ما اولین جزء رو براتون توضیح میدیم و بقیه نیز همانند با اونا هستند.

{ // Light air
   from: 0.3,
   to: 1.5,
   color: 'rgba(68, 170, 213, 0.1)',
   label: {
      text: 'Light air',
      style: {
         color: '#606060'
      }
   }
}

میبینید که مشخص شده که این نوار از نقطه 0.3 تا 1.5 رو پوشش میده و رنگ اون هم با استفاده از ویژگی color مشخص شده. برای عنوان اون هم از ویژگی label استفاده شده و متن اون رو درون text قرار داده و رنگ اون رو هم برابر با  606060 در نظر گرفته. نوارهای دیگه نیز بهمین صورت تعریف شدن. خروجی بصورت زیر خواهد بود:spline plotbands

نمونه هشتم : نمودار با محورهای لگاریتمی

در این قسمت یک نمودار لگاریتمی در اختیارتون قرار داده میشه. کدهای این نمودار:

<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 title = {
            text: 'Logarithmic axis demo'
        };
        var xAxis = {
            tickInterval: 1
        };
        var yAxis = {
            type: 'logarithmic',
            minorTickInterval: 0.1
        };
        var tooltip = {
            headerFormat: '<b>{series.name}</b><br>',
            pointFormat: 'x = {point.x}, y = {point.y}'
        };
        var plotOptions = {
            spline: {
                marker: {
                    enabled: true
                }
            }
        };
        var series = [{
            name: 'data',
            data: [1, 2, 4, 8, 16, 32, 64, 128, 256, 512],
            pointStart: 1
        }];

        var json = {};
        json.title = title;
        json.tooltip = tooltip;
        json.xAxis = xAxis;
        json.yAxis = yAxis;
        json.series = series;
        json.plotOptions = plotOptions;
        $('#container').highcharts(json);

    });
    </script>
</body>

</html>

میبینید که در ابتدا تنظیمات محور عمودی بصورت زیر قرار داده شده است:

var yAxis = {
   type: 'logarithmic',
   minorTickInterval: 0.1
};

با استفاده از ویژگی type و قرار دادن مقدار logarithmic برای اون باعث میشه که نمودار بصورت لگاریتمی در بیاد. انواع مختلفی که برای ویژگی type میتونین قرار بدین بصورت linear و logarithmic و datetime یا category هست. مقدار پیش فرض برابر با linear یا خطی هست. اگر خروجی نمودار رو ببینید بصورت زیر خواهد بود:logarithmic line chart

میبینید که محور عمودی بصورت لگاریتمی زیاد شده است.

در قسمتهای بعد نمونه‌های دیگه ای رو در اختیارتون میزارم.

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

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

یا علی

Source

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

جلسات دوره

نیاز به لاگین

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

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

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