ช่วงเวลา

ภาพรวม

Google แผนภูมิสามารถแสดงช่วงเวลารอบชุด โดยอาจใช้เพื่อแสดงภาพช่วงความเชื่อมั่น ค่าต่ำสุดและสูงสุดเกี่ยวกับค่า การสุ่มตัวอย่างเปอร์เซ็นไทล์ หรือสิ่งอื่นๆ ที่ต้องการอัตรากำไรที่แตกต่างกันในชุดหนึ่งๆ

ช่วงเวลามี 6 สไตล์ ได้แก่ เส้น แท่ง กล่อง แท่ง จุด และพื้นที่ คุณจะเห็นตัวอย่างของแต่ละรายการด้านล่าง ในแต่ละตัวอย่าง เราจะใช้ชุดข้อมูลเดียวกัน โดยไม่มีช่วงเวลาใดๆ

แผนภูมิด้านบนนี้เรียบง่าย โดยมีข้อมูล 7 ชุด ซึ่งมีความสำคัญเท่ากันหมด สิ่งที่ตามมา เราจะสมมติว่าซีรีส์แรกเป็นซีรีส์หลัก และอีก 6 ซีรีส์เป็นซีรีส์หลักที่มีการเปรียบเทียบกันผ่านช่วงเวลา

ระยะเวลาของเส้น

บางครั้งช่วงบรรทัดจะใช้เพื่อแสดงความแปรปรวนของการทดสอบหลายรายการ ในแผนภูมิต่อไปนี้ เราแสดง อนุกรมหลักและช่วงเวลารอบๆ

<html>
 
<head>
   
<script type="text/javascript" src="https://www.gstatic.com/charts/loader.js"></script>
   
<script type="text/javascript">
      google
.charts.load('current', {'packages':['corechart']});
      google
.charts.setOnLoadCallback(drawChart);

     
function drawChart() {
       
var data = new google.visualization.DataTable();
        data
.addColumn('number', 'x');
        data
.addColumn('number', 'values');
        data
.addColumn({id:'i0', type:'number', role:'interval'});
        data
.addColumn({id:'i1', type:'number', role:'interval'});
        data
.addColumn({id:'i2', type:'number', role:'interval'});
        data
.addColumn({id:'i2', type:'number', role:'interval'});
        data
.addColumn({id:'i2', type:'number', role:'interval'});
        data
.addColumn({id:'i2', type:'number', role:'interval'});
 
        data
.addRows([
           
[1, 100, 90, 110, 85, 96, 104, 120],
           
[2, 120, 95, 130, 90, 113, 124, 140],
           
[3, 130, 105, 140, 100, 117, 133, 139],
           
[4, 90, 85, 95, 85, 88, 92, 95],
           
[5, 70, 74, 63, 67, 69, 70, 72],
           
[6, 30, 39, 22, 21, 28, 34, 40],
           
[7, 80, 77, 83, 70, 77, 85, 90],
           
[8, 100, 90, 110, 85, 95, 102, 110]]);
 
       
// The intervals data as narrow lines (useful for showing raw source data)
       
var options_lines = {
            title
: 'Line intervals, default',
            curveType
: 'function',
            lineWidth
: 4,
            intervals
: { 'style':'line' },
            legend
: 'none'
       
};
 
       
var chart_lines = new google.visualization.LineChart(document.getElementById('chart_lines'));
        chart_lines
.draw(data, options_lines);
     
}
   
</script>
 
</head>
 
<body>
   
<div id="chart_lines" style="width: 900px; height: 500px;"></div>
 
</body>
</html>
 

ในข้อมูลด้านบน คุณจะเห็นว่าเราแนบตัวระบุที่แตกต่างกัน 3 รายการในชุดเสริม ได้แก่ i0, i2 และ i3 เราสามารถนำมาใช้ในการจัดรูปแบบของซีรีส์เหล่านั้น ต่างกันไป ด้านล่างคือสีและความหนาของบางสี

หมายเหตุ: โดยทั่วไปแล้ว การใช้รหัสซ้ำ อาจอยู่ในรูปแบบที่ไม่ถูกต้องตามที่เราทำข้างต้น โดยระบบใช้ i2 ไปแล้ว 4 ครั้ง วิธีนี้ได้ผล แต่เราอาจเปลี่ยนลักษณะการทำงานนี้ในอนาคต

ความแตกต่างเพียงอย่างเดียวคือในตัวเลือกต่อไปนี้

    var options_lines = {
        title
: 'Line intervals, tailored',
        lineWidth
: 4,
        curveType
:'function',
       
interval: {
           
'i0': { 'style':'line', 'color':'#D3362D', 'lineWidth': 0.5 },
           
'i1': { 'style':'line', 'color':'#F1CA3A', 'lineWidth': 1 },
           
'i2': { 'style':'line', 'color':'#5F9654', 'lineWidth': 2 },
       
},

        legend
: 'none',
   
};

ระยะเวลาของแท่ง

ช่วงเวลาเป็นแถบจะสร้างแถบข้อผิดพลาดรอบๆ ข้อมูลของคุณ คอลัมน์แรกและคอลัมน์สุดท้ายของช่วงจะวาดเป็นแท่งกว้างขนานกับแกนโดเมน และคอลัมน์ด้านในจะวาดเป็น "ขีด" สั้นๆ ระบบจะเพิ่ม "สติ๊ก" เพื่อผนวกแท่งแผนภูมิกว้าง (หากแท่งทั้ง 2 แท่งมีค่าเท่ากัน ระบบจะแสดงแท่งแผนภูมิเป็นคะแนน เว้นแต่ว่าตัวเลือก pointSize จะเป็น 0)

intervals.barWidth จะควบคุมความกว้างของแท่งแนวนอนที่สัมพันธ์กับคอลัมน์แรกและคอลัมน์สุดท้าย ส่วนความกว้างของแท่งแนวนอนที่สอดคล้องกับคอลัมน์ด้านในจะควบคุมด้วย intervals.shortBarWidth เมื่อละเว้น คุณจะเห็นแผนภูมิในลักษณะเดียวกับรายการด้านบนพร้อมด้วยตัวเลือกด้านล่าง

    var options_bars = {
        title
: 'Bars, default',
        curveType
: 'function',
        series
: [{'color': '#D9544C'}],
        intervals
: { style: 'bars' },
        legend
: 'none',
   
};

ช่วงเวลาของกล่อง

ช่วงของกล่องแสดงผลคอลัมน์ในตารางข้อมูลเป็นชุดสี่เหลี่ยมผืนผ้าที่ฝังอยู่ โดยคอลัมน์แรกและคอลัมน์สุดท้ายจะประกอบกันเป็นรูปสี่เหลี่ยมผืนผ้าด้านนอกสุด และคอลัมน์ด้านในจะแสดงผลเป็นสี่เหลี่ยมผืนผ้าที่มีสีเข้มกว่าภายในช่องที่มีคอลัมน์นั้น

วิธีระบุช่วงเวลาของกล่องมีดังนี้

    var options = {
        series
: [{'color': '#1A8763'}],
       
intervals: { style: 'boxes' },
        legend
: 'none',
   
};

คุณทำให้ช่องโดดเด่นขึ้นได้ด้วยตัวเลือก intervals.lineWidth และ intervals.barWidth ดังนี้

ตัวเลือกที่เกี่ยวข้องมีดังนี้

    var options = {
        title
:'Boxes, thick',
        curveType
:'function',
        lineWidth
: 4,
        series
: [{'color': '#1A8763'}],
       
intervals: { 'lineWidth':2, 'barWidth': 0.5, style: 'boxes' },
        legend
: 'none',
   
};

ระยะเวลาของ Sticky

ช่วงแท่งแสดงคู่คอลัมน์เป็นชุดไม้แท่งขนานกับแกนเป้าหมาย แท่งไม้ที่มีความสูงเป็น 0 จะแสดงผลเป็นจุด ซึ่งระงับได้โดยตั้งค่าตัวเลือก pointSize เป็น 0

คุณสร้างรายการเหล่านี้ได้โดยใช้ style เป็น 'sticks'

    var options_sticks = {
        title
:'Sticks, default',
        curveType
:'function',
        series
: [{'color': '#E7711B'}],
       
intervals: { style: 'sticks' },
        legend
: 'none',
   
};

ช่วงเวลาของจุด

ช่วงจุดจะแสดงข้อมูลช่วงเป็นวงกลมขนาดเล็ก

คุณควบคุมขนาดของจุดได้ด้วยตัวเลือก intervals.pointSize นี่ 2 นะ

    var options_points = {
        title
:'Points, default',
        curveType
:'function',
        lineWidth
: 4,
        series
: [{'color': '#D3362D'}],
       
intervals: { 'style':'points', pointSize: 2 },
        legend
: 'none',
   
};

นี่คือลักษณะของข้อมูลที่ 8

ช่วงเวลาในพื้นที่

ระยะเวลาของพื้นที่แสดงผลข้อมูลช่วงเป็นชุดของพื้นที่แรเงาที่ฝังอยู่ การวางคู่คอลัมน์คล้ายกับระยะห่างของกล่อง เว้นแต่ว่าจำเป็นต้องมีจำนวนคอลัมน์เท่ากัน

ซึ่งทำได้โดยการตั้งค่า style เป็น 'area'

    var options = {
        title
:'Area, default',
        curveType
:'function',
        series
: [{'color': '#F1CA3A'}],
       
intervals: { 'style':'area' },
        legend
: 'none',
   
};

การรวมรูปแบบของช่วงเวลา

เพื่อการปรับแต่งที่มากขึ้น คุณสามารถรวมรูปแบบช่วงเวลา ไว้ในแผนภูมิเดียว

ต่อไปนี้เป็นแผนภูมิที่รวมช่วงเวลาและช่วงแท่ง

ในแผนภูมิด้านบน เราระบุ style ของ 'bars' สำหรับช่วงเวลาที่ติดแท็ก i0 และ i1 และรูปแบบ 'area' สำหรับ i2 จากนั้นใช้ pointSize เพื่อกำหนด การจำกัดแถบดังนี้

    var options = {
        title
:'Bar/area interval chart',
        curveType
:'function',
        intervals
: { 'color':'series-color' },
       
interval: {
           
'i0': { 'color': '#4374E0', 'style':'bars', 'barWidth':0, 'lineWidth':4, 'pointSize':10, 'fillOpacity':1 },
           
'i1': { 'color': '#E49307', 'style':'bars', 'barWidth':0, 'lineWidth':4, 'pointSize':10, 'fillOpacity':1 },
           
'i2': { 'style':'area', 'curveType':'function', 'fillOpacity':0.3 }},

        legend
: 'none',
   
};

นี่คือแผนภูมิเส้นแสดงแบบช่วงของแท่งซึ่งมีช่วงเวลา i2 ที่แสดงเป็นแท่ง

    var options = {
        title
:'Sticks, horizontal',
        curveType
:'function',
        lineWidth
: 4,
        series
: [{'color': '#E7711B'}],
        intervals
: { 'lineWidth': 4, 'barWidth': 0.5 },
        interval
: {
           
'i2': { 'style':'sticks', 'color':'grey', 'boxWidth': 2.5,
           
'lineWidth': 1 }
       
},
        legend
: 'none',
   
};

แผนภูมิเส้นแบบช่วงที่ใช้ช่องความทึบแสงต่ำเพื่อวางช่วงเวลาที่เลือกในเบื้องหลังมีดังนี้

    // Focus is the error bars, but boxes are visible in the background.
   
var options_boxes_background = {
        title
:'Background boxes',
        curveType
:'function',
        lineWidth
: 4,
        series
: [{'color': '#1A8763'}],
       
intervals: { 'lineWidth':2, 'barWidth': 0.5 },
        interval
: {
           
'i2': { 'style':'boxes', 'color':'grey', 'boxWidth': 2.5,
           
'lineWidth': 0, 'fillOpacity': 0.2 }
       
},

        legend
: 'none',
   
};

เราสร้างแผนภูมิช่วงเวลา "จุดและหนวด" ได้โดยระบุรูปแบบ 'points' ความทึบแสงต่ำสำหรับช่วงเวลา 1 ช่วงพร้อมกับ boxWidth ดังนี้

    var options = {
        title
:'Points and whiskers',
        curveType
:'function',
        lineWidth
: 4,
        series
: [{'color': '#D3362D'}],
       
intervals: { 'lineWidth':2, 'barWidth': 0.5 },
        interval
: {
           
'i2': { 'style':'points', 'color':'grey', 'pointSize': 10,
           
'lineWidth': 0, 'fillOpacity': 0.3 }
       
},

        legend
: 'none',
   
};

พล็อตของกล่อง

สุดท้าย เราใช้ช่วงเวลาแบบกล่องและแท่งเพื่อสร้างแผนภูมิพล็อตแบบกล่องพื้นฐาน โดยอิงจากแผนภูมิ "จุดและเส้นแบ่ง" ด้านบน

      var options = {
          title
:'Box Plot',
          height
: 500,
          legend
: {position: 'none'},
          hAxis
: {
            gridlines
: {color: '#fff'}
         
},
          lineWidth
: 0,
          series
: [{'color': '#D3362D'}],
          intervals
: {
            barWidth
: 1,
            boxWidth
: 1,
            lineWidth
: 2,
            style
: 'boxes'
         
},
          interval
: {
            max
: {
              style
: 'bars',
              fillOpacity
: 1,
              color
: '#777'
           
},
            min
: {
              style
: 'bars',
              fillOpacity
: 1,
              color
: '#777'
           
}
         
}
     
};
   
    google.charts.load('current', {'packages':['corechart']});
    google
.charts.setOnLoadCallback(drawBoxPlot);

   
function drawBoxPlot() {

     
var array = [
       
['a', 100, 90, 110, 85, 96, 104, 120],
       
['b', 120, 95, 130, 90, 113, 124, 140],
       
['c', 130, 105, 140, 100, 117, 133, 139],
       
['d', 90, 85, 95, 85, 88, 92, 95],
       
['e', 70, 74, 63, 67, 69, 70, 72],
       
['f', 30, 39, 22, 21, 28, 34, 40],
       
['g', 80, 77, 83, 70, 77, 85, 90],
       
['h', 100, 90, 110, 85, 95, 102, 110]
     
];

     
var data = new google.visualization.DataTable();
      data
.addColumn('string', 'x');
      data
.addColumn('number', 'series0');
      data
.addColumn('number', 'series1');
      data
.addColumn('number', 'series2');
      data
.addColumn('number', 'series3');
      data
.addColumn('number', 'series4');
      data
.addColumn('number', 'series5');
      data
.addColumn('number', 'series6');

      data
.addColumn({id:'max', type:'number', role:'interval'});
      data
.addColumn({id:'min', type:'number', role:'interval'});
      data
.addColumn({id:'firstQuartile', type:'number', role:'interval'});
      data
.addColumn({id:'median', type:'number', role:'interval'});
      data
.addColumn({id:'thirdQuartile', type:'number', role:'interval'});

      data
.addRows(getBoxPlotValues(array));

     
/**
       * Takes an array of input data and returns an
       * array of the input data with the box plot
       * interval data appended to each row.
       */

     
function getBoxPlotValues(array) {

       
for (var i = 0; i < array.length; i++) {

         
var arr = array[i].slice(1).sort(function (a, b) {
           
return a - b;
         
});

         
var max = arr[arr.length - 1];
         
var min = arr[0];
         
var median = getMedian(arr);

         
// First Quartile is the median from lowest to overall median.
         
var firstQuartile = getMedian(arr.slice(0, 4));

         
// Third Quartile is the median from the overall median to the highest.
         
var thirdQuartile = getMedian(arr.slice(3));

          array
[i][8] = max;
          array
[i][9] = min
          array
[i][10] = firstQuartile;
          array
[i][11] = median;
          array
[i][12] = thirdQuartile;
       
}
       
return array;
     
}

     
/*
       * Takes an array and returns
       * the median value.
       */

     
function getMedian(array) {
       
var length = array.length;

       
/* If the array is an even length the
         * median is the average of the two
         * middle-most values. Otherwise the
         * median is the middle-most value.
         */

       
if (length % 2 === 0) {
         
var midUpper = length / 2;
         
var midLower = midUpper - 1;

         
return (array[midUpper] + array[midLower]) / 2;
       
} else {
         
return array[Math.floor(length / 2)];
       
}
     
}

     
var options = {
          title
:'Box Plot',
          height
: 500,
          legend
: {position: 'none'},
          hAxis
: {
            gridlines
: {color: '#fff'}
         
},
          lineWidth
: 0,
          series
: [{'color': '#D3362D'}],
          intervals
: {
            barWidth
: 1,
            boxWidth
: 1,
            lineWidth
: 2,
            style
: 'boxes'
         
},
          interval
: {
            max
: {
              style
: 'bars',
              fillOpacity
: 1,
              color
: '#777'
           
},
            min
: {
              style
: 'bars',
              fillOpacity
: 1,
              color
: '#777'
           
}
         
}
     
};

     
var chart = new google.visualization.LineChart(document.getElementById('box_plot'));

      chart
.draw(data, options);
   
}