คู่มือการใช้งาน GGraphs อย่างละเอียด สร้างกราฟ SVG แบบไดนามิกได้ง่าย

GGraphs เป็นไลบรารี JavaScript ที่มีน้ำหนักเบา สำหรับสร้างกราฟแบบ SVG ที่มีความหลากหลายและสามารถปรับแต่งได้ง่าย รวมถึงกราฟเส้น (Line Charts), กราฟแท่ง (Bar Charts), กราฟวงกลม (Pie Charts), กราฟโดนัท (Donut Charts) และกราฟเกจ (Gauge Charts) ออกแบบมาเพื่อความเรียบง่ายและความยืดหยุ่น ช่วยให้นักพัฒนาสามารถสร้างการแสดงข้อมูลที่มีปฏิสัมพันธ์และดูดีได้อย่างรวดเร็ว

คุณสมบัติหลัก

  • ประเภทกราฟหลายรูปแบบ: รองรับกราฟเส้น, กราฟแท่ง, กราฟวงกลม, กราฟโดนัท และกราฟเกจ
  • การออกแบบตอบสนอง (Responsive Design): ปรับขนาดอัตโนมัติตามขนาดของ container
  • ปรับแต่งได้ง่าย: ปรับสี, ฟอนต์, ขนาด และอื่นๆ ตามต้องการ
  • องค์ประกอบที่มีปฏิสัมพันธ์: แสดง tooltip, การคลิกบนองค์ประกอบ และ legend
  • แอนิเมชัน: แอนิเมชันที่ราบรื่นในการเรนเดอร์และอัปเดตกราฟ
  • การผูกข้อมูล (Data Binding): โหลดข้อมูลจากอ็อบเจ็กต์ JavaScript หรือจากตาราง HTML
  • การเข้าถึงที่ดีขึ้น (Accessibility): เพิ่ม ARIA attributes เพื่อช่วยในการเข้าถึงข้อมูล

การติดตั้ง

เพื่อใช้งาน GGraphs ในโปรเจ็กต์ของคุณ เพียงแทรกไฟล์ JavaScript ของ GGraphs ลงในไฟล์ HTML ของคุณ

<!DOCTYPE html>
<html lang="th">
<head>
  <meta charset="UTF-8">
  <title>ตัวอย่าง GGraphs</title>
  <style>
    #graph-container {
      width: 800px;
      height: 600px;
      border: 1px solid #ccc;
      background-color: #fff;
    }
  </style>
</head>
<body>
  <div id="graph-container"></div>

  <!-- รวมสคริปต์ GGraphs -->
  <script src="path/to/ggraphs.js"></script>
  <script>
    // โค้ดการตั้งค่าเริ่มต้นของคุณที่นี่
  </script>
</body>
</html>

หมายเหตุ: เปลี่ยน path/to/ggraphs.js ให้เป็นเส้นทางที่ถูกต้องไปยังไฟล์ ggraphs.js ของคุณ

การใช้งานเบื้องต้น

ตัวอย่างพื้นฐาน

สร้าง container สำหรับกราฟและเริ่มต้น GGraphs ด้วยข้อมูลของคุณ

<!DOCTYPE html>
<html lang="th">
<head>
  <meta charset="UTF-8">
  <title>ตัวอย่างกราฟเส้น GGraphs</title>
  <style>
    #line-chart {
      width: 800px;
      height: 600px;
      border: 1px solid #ccc;
      background-color: #fff;
    }
  </style>
</head>
<body>
  <div id="line-chart"></div>

  <script src="path/to/ggraphs.js"></script>
  <script>
    const data = [
      {
        name: 'ยอดขาย',
        color: '#FF6B6B',
        data: [
          { label: 'มกราคม', value: 30 },
          { label: 'กุมภาพันธ์', value: 20 },
          { label: 'มีนาคม', value: 50 },
          // เพิ่มข้อมูลเพิ่มเติม...
        ]
      },
      {
        name: 'ค่าใช้จ่าย',
        color: '#4ECDC4',
        data: [
          { label: 'มกราคม', value: 25 },
          { label: 'กุมภาพันธ์', value: 15 },
          { label: 'มีนาคม', value: 35 },
          // เพิ่มข้อมูลเพิ่มเติม...
        ]
      }
    ];

    const graph = new GGraphs('line-chart', {
      type: 'line',
      data: data,
      showLegend: true,
      legendPosition: 'bottom',
      onClick: (event) => {
        console.log('คุณคลิก:', event);
      }
    });
  </script>
</body>
</html>

คำอธิบายโค้ด

  1. กำหนด Container: สร้าง <div> ที่จะใช้เป็นพื้นที่สำหรับกราฟ
  2. โหลด GGraphs: รวมไฟล์ ggraphs.js ลงในหน้า HTML
  3. กำหนดข้อมูล: สร้างอาร์เรย์ของอ็อบเจ็กต์ที่แทนข้อมูลแต่ละชุด
  4. เริ่มต้น GGraphs: สร้างอินสแตนซ์ของ GGraphs โดยระบุ ID ของ container และตัวเลือกต่างๆ

การตั้งค่าและปรับแต่ง

GGraphs ให้ความยืดหยุ่นในการปรับแต่งผ่านอ็อบเจ็กต์ options ที่ส่งให้กับคอนสตรัคเตอร์ นี่คือรายละเอียดของตัวเลือกที่สามารถปรับได้

การตั้งค่าพื้นฐาน

  • type (string): ประเภทของกราฟที่ต้องการ ('line', 'bar', 'pie', 'donut', 'gauge')
  • data (Array): อาร์เรย์ของอ็อบเจ็กต์ series ที่มี name, color, และ data points
  • showLegend (boolean): แสดงหรือไม่แสดง legend
  • legendPosition (string): ตำแหน่งของ legend ('top', 'bottom', 'left', 'right')
  • showTooltip (boolean): เปิดหรือปิด tooltip
  • animation (boolean): เปิดหรือปิดแอนิเมชัน
  • onClick (function): ฟังก์ชัน callback สำหรับเหตุการณ์การคลิกบนองค์ประกอบของกราฟ

ตัวเลือกเพิ่มเติม

  • colors (Array<string>): อาร์เรย์ของสีที่ใช้ในกราฟ
  • gridColor (string): สีของเส้นกริด
  • axisColor (string): สีของแกนกราฟ
  • curveType (string): สำหรับกราฟเส้น ('linear' หรือ 'curve')
  • maxGaugeValue (number): ค่าสูงสุดสำหรับกราฟเกจ
  • centerText (string): ข้อความที่จะแสดงตรงกลางกราฟ (เหมาะสำหรับกราฟโดนัทและเกจ)
  • showCenterText (boolean): แสดงหรือไม่แสดงข้อความตรงกลางกราฟ
  • gap (number): ช่องว่างระหว่าง slice ในกราฟวงกลมและโดนัท
  • borderWidth (number): ความหนาของเส้นขอบ
  • borderColor (string): สีของเส้นขอบ
  • pointRadius (number): รัศมีของจุดข้อมูลในกราฟเส้น
  • lineWidth (number): ความหนาของเส้นในกราฟเส้น
  • fillArea (boolean): เติมพื้นที่ใต้เส้นในกราฟเส้น
  • fillOpacity (number): ความโปร่งใสาของพื้นที่ที่เติม
  • fontFamily (string): ฟอนต์ที่ใช้ในกราฟ
  • textColor (string): สีของข้อความในกราฟ
  • fontSize (number): ขนาดฟอนต์พื้นฐาน
  • showAxisLabels (boolean): แสดงหรือไม่แสดงป้ายชื่อบนแกน
  • showAxis (boolean): แสดงหรือไม่แสดงแกนกราฟ
  • animationDuration (number): ระยะเวลาแอนิเมชัน (เป็นมิลลิวินาที)
  • donutThickness (number): ความหนาของรูในกราฟโดนัท
  • gaugeCurveWidth (number): ความหนาของเส้นโค้งในกราฟเกจ
  • showDataLabels (boolean): แสดงหรือไม่แสดงป้ายชื่อข้อมูลบนองค์ประกอบของกราฟ
  • maxDataPoints (number): จำนวนข้อมูลสูงสุดที่จะแสดง (ตั้งเป็น 0 เพื่อไม่จำกัด)
  • table (string): ID ของตาราง HTML ที่จะใช้โหลดข้อมูล
  • และตัวเลือกอื่น ๆ สำหรับการปรับแต่งเพิ่มเติม

ตัวอย่างการตั้งค่าเพิ่มเติม

const graph = new GGraphs('graph-container', {
  type: 'bar',
  data: data,
  showLegend: true,
  legendPosition: 'right',
  showGrid: true,
  gridColor: '#E0E0E0',
  axisColor: '#333333',
  colors: ['#FF6B6B', '#4ECDC4'],
  borderWidth: 2,
  borderColor: '#000000',
  animationDuration: 1500,
  onClick: (event) => {
    console.log(`คุณคลิกบน ${event.type} ใน series "${event.series.name}" มี label "${event.data.label}" และ value "${event.data.value}"`);
  }
});

การจัดการเหตุการณ์ (Event Handling)

GGraphs ให้ความสามารถในการจัดการเหตุการณ์ต่าง ๆ ผ่านตัวเลือก onClick ซึ่งเป็นฟังก์ชัน callback ที่จะถูกเรียกเมื่อผู้ใช้คลิกบนองค์ประกอบของกราฟ เช่น บาร์, จุดข้อมูล, slice ของวงกลม เป็นต้น

การใช้งาน onClick

const graph = new GGraphs('graph-container', {
  type: 'pie',
  data: pieData,
  onClick: (event) => {
    if (event.type === 'pie') {
      alert(`คุณคลิกบน ${event.data.label} ที่มีค่า ${event.data.value}`);
    }
  }
});

รายละเอียดของ Event Object

  • type (string): ประเภทขององค์ประกอบที่ถูกคลิก ('line', 'bar', 'point', 'pie', 'gauge')
  • series (Object): อ็อบเจ็กต์ series ที่เกี่ยวข้องกับองค์ประกอบที่ถูกคลิก
  • data (Object): อ็อบเจ็กต์ข้อมูลที่เกี่ยวข้องกับองค์ประกอบที่ถูกคลิก

การปรับแต่งเพิ่มเติม

GGraphs ให้ความยืดหยุ่นในการปรับแต่งกราฟของคุณได้อย่างเต็มที่

  • การกำหนดสี: ปรับสีของแต่ละ series หรือองค์ประกอบในกราฟ
  • ฟอนต์และขนาด: ปรับเปลี่ยนฟอนต์และขนาดของข้อความให้เหมาะสมกับการออกแบบ
  • ตำแหน่ง Legend: เลือกตำแหน่งของ legend ได้หลายแบบ เช่น ด้านบน ด้านล่าง ซ้าย ขวา
  • Tooltips: ปรับแต่งเนื้อหาของ tooltip ผ่านฟังก์ชัน formatter
  • แอนิเมชัน: เปิดหรือปิดแอนิเมชัน และกำหนดระยะเวลาแอนิเมชัน
  • การออกแบบตอบสนอง: ให้กราฟปรับขนาดได้ตามขนาดของ container โดยอัตโนมัติ
  • ป้ายชื่อข้อมูล: เปิดหรือปิดการแสดงป้ายชื่อข้อมูลบนองค์ประกอบของกราฟ

ตัวอย่างการใช้งาน

กราฟเส้น (Line Chart)

<div id="line-chart" style="width: 800px; height: 600px;"></div>

<script src="path/to/ggraphs.js"></script>
<script>
  const data = [
    {
      name: 'ยอดขาย',
      color: '#FF6B6B',
      data: [
        { label: 'มกราคม', value: 100 },
        { label: 'กุมภาพันธ์', value: 150 },
        { label: 'มีนาคม', value: 200 },
        // ข้อมูลเพิ่มเติม...
      ]
    },
    {
      name: 'กำไร',
      color: '#4ECDC4',
      data: [
        { label: 'มกราคม', value: 50 },
        { label: 'กุมภาพันธ์', value: 70 },
        { label: 'มีนาคม', value: 90 },
        // ข้อมูลเพิ่มเติม...
      ]
    }
  ];

  const lineChart = new GGraphs('line-chart', {
    type: 'line',
    data: data,
    showLegend: true,
    legendPosition: 'bottom',
    fillArea: true,
    fillOpacity: 0.2,
    onClick: (event) => {
      console.log('คุณคลิกบน:', event);
    }
  });
</script>

กราฟวงกลม (Pie Chart)

<div id="pie-chart" style="width: 800px; height: 600px;"></div>

<script src="path/to/ggraphs.js"></script>
<script>
  const pieData = [
    {
      name: 'ส่วนแบ่งตลาด',
      color: '#FF6B6B',
      data: [
        { label: 'ผลิตภัณฑ์ A', value: 40 },
        { label: 'ผลิตภัณฑ์ B', value: 25 },
        { label: 'ผลิตภัณฑ์ C', value: 35 }
      ]
    }
  ];

  const pieChart = new GGraphs('pie-chart', {
    type: 'pie',
    data: pieData,
    showLegend: true,
    legendPosition: 'right',
    showDataLabels: true,
    onClick: (event) => {
      alert(`คุณคลิกบน ${event.data.label} ที่มีค่า ${event.data.value}`);
    }
  });
</script>

กราฟเกจ (Gauge Chart)

<div id="gauge-chart" style="width: 800px; height: 600px;"></div>

<script src="path/to/ggraphs.js"></script>
<script>
  const gaugeData = [
    {
      name: 'ประสิทธิภาพ',
      color: '#4ECDC4',
      data: [
        { label: 'ประสิทธิภาพ', value: 75 }
      ]
    }
  ];

  const gaugeChart = new GGraphs('gauge-chart', {
    type: 'gauge',
    data: gaugeData,
    maxGaugeValue: 100,
    centerText: '75%',
    showLegend: false,
    onClick: (event) => {
      console.log('คุณคลิกบนเกจ:', event);
    }
  });
</script>

คำถามที่พบบ่อย

1. ทำไมกราฟไม่แสดงผล?

ตรวจสอบให้แน่ใจว่า

  • ได้รวมไฟล์ ggraphs.js อย่างถูกต้อง
  • กำหนด ID ของ container ให้ตรงกับที่ระบุในคอนสตรัคเตอร์
  • ข้อมูลที่ส่งให้มีรูปแบบที่ถูกต้อง

2. สามารถปรับแต่งสีของกราฟได้อย่างไร?

กำหนดสีสำหรับแต่ละ series ในอ็อบเจ็กต์ data หรือใช้ตัวเลือก colors ใน options

const graph = new GGraphs('graph-container', {
  data: data,
  colors: ['#FF6B6B', '#4ECDC4'],
  // ตัวเลือกอื่น ๆ...
});

3. ฉันสามารถเพิ่มข้อมูลแบบไดนามิกได้หรือไม่?

ได้ คุณสามารถใช้เมธอด addDataPoint หรือ addDataPoints เพื่อเพิ่มข้อมูลใหม่หลังจากที่กราฟถูกสร้างขึ้นแล้ว

// เพิ่มจุดข้อมูลใหม่ไปยัง series แรก
graph.addDataPoint({ label: 'มิถุนายน', value: 60 }, 0);

// เพิ่มหลายจุดข้อมูลพร้อมกัน
graph.addDataPoints([
  { seriesIndex: 0, data: { label: 'กรกฎาคม', value: 70 } },
  { seriesIndex: 1, data: { label: 'กรกฎาคม', value: 45 } }
]);

การสนับสนุนและการมีส่วนร่วม

หากคุณพบปัญหาหรือมีข้อเสนอแนะเกี่ยวกับ GGraphs สามารถสอบถามได้ที่เว็บไซต์ Kotchasan.com ได้ตลอดเวลา

ใบอนุญาต

GGraphs เปิดให้ใช้งานภายใต้ MIT License

ตัวอย่าง

https://goragodwiriya.github.io/ggraphs/

ดาวน์โหลดโค้ดได้จาก Github