คู่มือการใช้งานระบบบริการแสดงกราฟจากข้อมูล
1. แนะนำระบบบริการแสดงกราฟจากข้อมูล
ระบบบริการแสดงกราฟจากข้อมูล (Chart-io) เป็นบริการที่สร้างบนเว็บที่สร้างภาพแผนภูมิได้ทันที รูปภาพเหล่านี้เหมาะสำหรับการฝังในเอกสาร, อีเมล, และรูปแบบอื่นๆ แผนภูมิถูกเรนเดอร์โดยระบบ ซึ่งเป็นไลบรารีการสร้างแผนภูมิที่สำนักงานสถิติแห่งชาติได้จัดทำขึ้น
เริ่มต้นใช้งาน
Chart-io ทำงานโดยใช้การกำหนดค่า Chart.js และแสดงผลเป็นรูปภาพ คุณสามารถส่งการกำหนดค่าแผนภูมิของคุณในรูปแบบ JSON หรือ Javascript โดยใช้ URL หรือผ่านคำขอ POST
ตัวอย่างเช่น ใช้การกำหนดค่า Chart แบบง่ายๆ นี้:
{
"type": "bar", // แสดงผลแบบ Bar
"data": {
"labels": ["2020", "2021", "2022", "2023", "2024"], // ตั้งค่าข้อความแกน X
"datasets": [
{
"label": "ผู้ใช้งาน", // ตั้งชื่อ dataset เป็น ‘ผู้ใช้งาน’
"data": [24, 75, 36, 9, 14] // เพิ่มข้อมูลบนแผนภูมิ
}
]
}
}
ตัวอย่างเช่น ใช้การกำหนดค่า Chart แบบง่ายๆ นี้:
1.1 การใช้ API
การใช้ API รองรับทั้งวิธี GET และ POST พารามิเตอร์เหล่านี้ให้การควบคุมขนาด ความละเอียด พื้นหลัง ของแผนภูมิ:
ตัวแปร (Parameter) | รูปแบบ (Type) | คำอธิบาย (description) |
---|---|---|
chart | string | ชุดคำสั่งที่ใช้สำหรับแสดงผล ให้เป็นแผนภูมิจะอยู่ในรูปแบบของ Javascript หรือ JSON |
width | integer | ความกว้างของรูป (pixels) ค่าตั้งต้น 500 |
height | integer | ความสูงของรูป (pixels) ค่าตั้งต้น 300 |
backgroundColor | string | หน่วยเป็น RGB, HEX, HSL, หรือชื่อของสีโดยมีค่าตั้งต้นเป็นไม่มีสี |
format | string | png, webp, svg, หรือ pdf. โดยมีค่าตั้งต้นเป็น png |
encoding | string | url หรือ base64. โดยมีค่าตั้งต้นเป็นurl |
ข้อมูล
เรียนรู้เพิ่มเติมเกี่ยวกับพารามิเตอร์ API และ POST endpoint
2. ลงทะเบียน
ลงทะเบียนเพื่อใช้งาน API เมื่อเข้าใช้งานครั้งแรกต้องทำการลงทะเบียนที่เมนู “ลงทะเบียน”
ระบุข้อมูลส่วนตัวของผู้ใช้ใหม่สำหรับการลงทะเบียนเพื่อขอใช้งาน
ข้อมูลลงทะเบียน
อีเมล – ของผู้ใช้งาน
เพื่อให้ระบบตอบกลับการแจ้งสิทธิการใช้งานผ่านอีเมลตามที่ได้ระบุไว้
ชื่อ (ภาษาไทย) – ชื่อจริงภาษาไทยโดยไม่ต้องใส่คำนำหน้า
นามสกุล (ภาษาไทย) – นามสกุลภาษาไทย
ชื่อ (ภาษาอังกฤษ) – ชื่อจริงภาษาอังกฤษโดยไม่ต้องใส่คำนำหน้า
นามสกุล (ภาษาอังกฤษ) – นามสกุลภาษาอังกฤษ
เบอร์โทรศัพท์ – เบอร์โทรศัพท์ 9-10 หลักโดยไม่ต้องเว้นวรรค เพียง 1
เลขหมาย
กระทรวง – เลือกกระทรวงที่สังกัด
หน่วยงาน – เลือกหน่วยงานที่สังกัด
เมื่อระบุข้อมูลครบถ้วนและกดปุ่มลงทะเบียน คุณจะได้รับข้อความ “โปรดรอการอนุมัติการใช้งานระบบจากอีเมลที่แจ้งกลับซึ่งจะดำเนินการภายใน 5 วันทำการ” ดังรูป
ข้อมูลลงทะเบียนของคุณจะถูกตรวจสอบ หากได้รับอนุมัติ โปรดตรวจสอบอีเมลของคุณ เพื่อรับโทเคนจากที่ระบบส่งให้ สำหรับประกอบการใช้งาน ผ่าน API
3. วิธีใช้งานผ่าน API
3.1 วิธีส่งข้อมูลพารามิเตอร์ต่อท้าย URL ด้วยคำสั่ง GET
การกำหนดค่าพารามิเตอร์ท้าย URL http://chart-io.nso.go.th/api/v1/chart(endpoint) เพื่อใช้สร้างแผนภูมิ โดยระบบจะรับค่าพารามิเตอร์เป็น URL http://chart-io.nso.go.th:8007/api/v1/chart รวมกับพารามิเตอร์อื่นๆ ได้แก่ โทเคน และ ชุดคำสั่งสตริงสำหรับสร้างแผนภูมิ ตัวอย่างเช่น:
ระบุโทเคนที่คุณได้รับผ่านอีเมล เช่น
http:/chart-io.nso.go.th/api/v1/chart?token=&config={...}
ชุดคำสั่งสตริงสำหรับสร้างแผนภูมิ
หากคุณไม่ต้องการสร้าง URL ด้วยตัวเองระบบจะมีให้บริการ API ในการสร้าง URL ให้คุณ ภาษาการเขียนโปรแกรมหลายภาษา
พารามิเตอร์แผนภูมิที่รองรับ
- ประเภท: Javascript หรือ JSON
- จำเป็นต้องใส่ทุกครั้ง
- ชื่อพารามิเตอร์: chart หรือ c
หากคุณกำลังส่งคำขอแบบ GET เราขอแนะนำให้คุณ เข้ารหัส เข้ารหัส URL หรือใช้ระบบของเราในการแปลงเป็น URL เท่านั้น มิฉะนั้นคุณจะประสบปัญหาเกี่ยวกับอักขระพิเศษหรือข้อผิดพลาดทางไวยากรณ์ในโปรแกรมของคุณ
การใช้งาน backgroundColor
- ประเภท: สตริง
- รหัสสีที่รับได้: rgb, hex, hsl
- ค่า Default: ไม่มีสี
- ชื่อพารามิเตอร์: backgroundColor หรือ bkg
พื้นหลังของแผนภูมิ ใช้รูปแบบรหัสสี เช่น
- RGB ให้ใส่รหัสสี เช่น rgb(255, 150, 0)
- สีพื้นฐาน ให้ใส่คำ เช่น red
- ค่าเลขฐานสิบหกที่เข้ารหัส URL ให้ใส่รหัสสี เช่น %23FF9600 (คือ #FF9600 ที่เข้ารหัสแล้ว)
ตัวอย่างการเรียกใช้ GET
เข้าใช้งานผ่าน http://chart-io.nso.go.th/api/v1/#/default/get_chart
ที่ GET /chart ให้กดปุ่ม [Try it out] เพื่อระบุ token และ Config โดยระบุโทเคนที่คุณได้รับผ่านอีเมล
ตัวอย่างชุดคำสั่งสตริงที่ใช้สำหรับสร้างแผนภูมิ
{
"type": "bar",
"data": {
"labels": [
"มกราคม", "กุมภาพันธ์", "มีนาคม", "เมษายน", "พฤษภาคม", "มิถุนายน", "กรกฎาคม"
],
"datasets": [
{
"label": "ข้อมูลชุดแรก",
"backgroundColor": "rgba(255, 99, 132, 0.5)",
"borderColor": "rgb(255, 99, 132)",
"borderWidth": 1,
"data": [-31, -70, -30, -33, -9, 14, -41]
},
{
"label": "ข้อมูลชุดที่สอง",
"backgroundColor": "rgba(54, 162, 235, 0.5)",
"borderColor": "rgb(54, 162, 235)",
"borderWidth": 1,
"data": [73, 41, 29, 61, -65, 59, 38]
}
]
},
"options": {
"plugins": {
"title": {
"display": "true",
"text": "Bar Chart"
},
"datalabels": {
"anchor": "start",
"align": "start",
"color": "#666",
"font": {
"weight": "normal"
}
}
}
}
}
คัดลอกชุดคำสั่งสตริงที่ใช้สำหรับสร้างแผนภูมิลงในช่องนี้
เมื่อระบุครบทั้ง 2 ช่องแล้วให้กดปุ่ม [Execute] หากข้อมูล โทเคนและชุดคำสั่งสตริงที่ระบุก่อนหน้าถูกต้องระบบจะตอบกลับ ดังนี้
Curl
Request URL
- สำหรับ GET แผนภูมิผ่าน URL คุณสามารถคัดลอกไปใช้งานได้ทันที
Server Response
Response headers
3.2 วิธีส่งข้อมูลพารามิเตอร์ต่อท้าย URL ด้วยคำสั่ง POST
หากแผนภูมิของคุณมีขนาดใหญ่หรือซับซ้อน คุณอาจต้องการส่งคำขอ POST แทนที่จะส่งคำขอ GET ซึ่งจะช่วยหลีกเลี่ยงการจำกัดความยาว URL และหมายความว่าคุณไม่ต้องกังวลเกี่ยวกับการเข้ารหัส URL ที่พารามิเตอร์ท้ายของ URL ยาวเกินไปด้วยคำสั่ง POST /chart ดังนี้
ตัวอย่างการเรียกใช้ POST
เข้าใช้งานผ่าน http:/chart-io.nso.go.th/api/v1/#/default/get_chart
ที่ POST /chart ให้กดปุ่ม [Try it out] เพื่อระบุ token และ Value โดยระบุโทเคนที่คุณได้รับผ่านอีเมล
ตัวอย่างชุดคำสั่งสตริงที่ใช้สำหรับสร้างแผนภูมิ
{
"type": "bar",
"data": {
"labels": [ "มกราคม", "กุมภาพันธ์", "มีนาคม", "เมษายน", "พฤษภาคม", "มิถุนายน", "กรกฎาคม" ],
"datasets": [
{
"label": "ข้อมูลชุดแรก",
"backgroundColor": "rgba(255, 99, 132, 0.5)",
"borderColor": "rgb(255, 99, 132)",
"borderWidth": 1,
"data": [ -31, -70, -30, -33, -9, 14, -41 ]
},
{
"label": "ข้อมูลชุดที่สอง",
"backgroundColor": "rgba(54, 162, 235, 0.5)",
"borderColor": "rgb(54, 162, 235)",
"borderWidth": 1,
"data": [ 73, 41, 29, 61, -65, 59, 38 ]
}
]
},
"options": {
"plugins": {
"title": {
"display": "true",
"text": "Bar Chart"
},
"datalabels": {
"anchor": "start",
"align": "start",
"color": "#666",
"font": {
"weight": "normal"
}
}
}
}
}
คัดลอกชุดคำสั่งสตริงที่ใช้สำหรับสร้างแผนภูมิลงในช่องนี้
เมื่อระบุครบทั้ง 2 ช่องแล้วให้กดปุ่ม [Execute] หากข้อมูล โทเคนและชุดคำสั่งสตริงที่ระบุก่อนหน้าถูกต้องระบบจะตอบกลับ ดังนี้
Curl
Request URL
Server Response
Response headers
4. ประเภทของแผนภูมิ
สำหรับตัวอย่างแผนภูมิที่มีให้บริการ สามารถดูได้ที่ chart gallery
การเปลี่ยนประเภทของแผนภูมิสามารถทำได้ไม่ยาก เช่น เมื่อเปลี่ยน type: bar เป็นtype: line เราจะสามารถสร้างแผนภูมิแบบเส้นด้วยข้อมูลเดียวกันได้ทันที:
แผนภูมิแบบพื้นฐาน
4.1 Bar
ดูเอกสารประกอบแผนภูมิ Bar
{
"type": "bar",
"data": {
"labels": ["มกราคม", "กุมภาพันธ์", "มีนาคม", "เมษายน", "พฤษภาคม"],
"datasets": [
{
"label": "ข้อมูลชุดแรก",
"data": [-31, -70, -30, -33, -9, 14, -41]
},
{
"label": "ข้อมูลชุดที่สอง",
"data": [73, 41, 29, 61, -65, 59, 38]
}
]
},
"options": {
"plugins": {
"title": {
"display": "true",
"text": "Bar Chart"
}
}
}
}
4.2 Line
ดูเอกสารประกอบแผนภูมิ Line
{
"type": "line",
"data": {
"labels": ["มกราคม", "กุมภาพันธ์", "มีนาคม", "เมษายน", "พฤษภาคม"],
"datasets": [
{
"label": "ข้อมูลชุดแรก",
"data": [-31, -70, -30, -33, -9, 14, -41]
},
{
"label": "ข้อมูลชุดที่สอง",
"data": [73, 41, 29, 61, -65, 59, 38]
}
]
},
"options": {
"plugins": {
"title": {
"display": "true",
"text": "Line Chart"
}
}
}
}
4.3 Pie
ดูเอกสารประกอบแผนภูมิ Pie
{
"type": "pie",
"data": {
"labels": [ "แดง", "ส้ม", "เหลือง", "เขียว", "ฟ้า" ],
"datasets": [
{
"data": [ 84, 28, 57, 19, 97 ],
"label": "ข้อมูลชุดที่ 1"
}
]
},
"options": {
"plugins": {
"title": {
"display": "true",
"text": "Pie Chart"
},
"datalabels": { }
}
}
}
4.4 Doughnut
ดูเอกสารประกอบแผนภูมิ Doughnut
{
"type": "doughnut",
"data": {
"labels": [ "แดง", "ส้ม", "เหลือง", "เขียว", "ฟ้า" ],
"datasets": [
{
"data": [ 84, 28, 57, 19, 97 ],
"label": "ข้อมูลชุดที่ 1"
}
]
},
"options": {
"plugins": {
"title": {
"display": "true",
"text": "Doughnut Chart"
},
"datalabels": { }
}
}
}
4.5 Polar
ดูเอกสารประกอบแผนภูมิ Polar
{
"type": "polarArea",
"data": {
"labels": [
"แดง", "ส้ม", "เหลือง", "เขียว", "ฟ้า"
],
"datasets": [
{
"data": [ 84, 28, 57, 19, 97 ],
"label": "ข้อมูลชุดที่ 1"
}
]
},
"options": {
"plugins": {
"title": {
"display": "true",
"text": "PolarArea Chart"
},
"datalabels": {}
}
}
}
4.6 Scatter
ดูเอกสารประกอบแผนภูมิ Scatter
{
"type": "scatter",
"data": {
"datasets": [
{
"label": "ข้อมูลชุดที่ 1",
"data": [
{"x": -49, "y": 40},
{"x": -59, "y": -67},
{"x": -92, "y": -50},
{"x": -21, "y": -39},
{"x": -79, "y": 56},
{"x": -25, "y": 81}
]
},
{
"label": "ข้อมูลชุดที่ 2",
"data": [
{"x": -88, "y": -59},
{"x": 17, "y": 99},
{"x": -84, "y": 12},
{"x": -76, "y": 91},
{"x": -98, "y": 71},
{"x": -51, "y": -31}
]
}
]
},
"options": {
"plugins": {
"title": {
"display": true,
"text": "Scatter Chart"
}
}
}
}
แผนภูมิแบบชั้นสูง
4.7 Bubble
ดูเอกสารประกอบแผนภูมิ Bubble
{
"type": "bubble",
"data": {
"datasets": [
{
"label": "ข้อมูลชุดที่ 1",
"data": [
{ "x": 62, "y": 94, "r": 9.8 },
{ "x": -62, "y": -34, "r": 7.4 },
{ "x": 8, "y": 60, "r": 1.8 },
{ "x": -44, "y": 59, "r": 9.4 },
{ "x": 64, "y": 46, "r": 6.8 },
{ "x": 95, "y": -80, "r": 1.8 }
]
},
{
"label": "ข้อมูลชุดที่ 2",
"data": [
{ "x": -15, "y": -28, "r": 14.8 },
{ "x": -31, "y": -53, "r": 11 },
{ "x": -70, "y": -74, "r": 14 },
{ "x": -82, "y": 34, "r": 13.6 },
{ "x": -89, "y": -71, "r": 16.8 },
{ "x": 15, "y": -38, "r": 0.2 }
]
}
]
},
"options": {
"plugins": {
"title": {
"display": true,
"text": "Bubble Chart"
}
}
}
}
4.8 Radar
ดูเอกสารประกอบแผนภูมิ Radar
{
"type": "radar",
"data": {
"labels": [
"กิน", "ดื่ม", "นอน", "ออกแบบ", "เขียนโค้ด", "ปั่นจักรยาน", "วิ่ง"
],
"datasets": [
{
"label": "ข้อมูลชุดที่ 1",
"data": [65, 59, 90, 81, 56, 55, 40]
},
{
"label": "ข้อมูลชุดที่ 2",
"data": [28, 48, 40, 19, 96, 27, 100]
}
]
},
"options": {
"elements": {
"line": {
"borderWidth": 3
}
},
"plugins": {
"title": {
"display": "true",
"text": "Radar Chart"
}
}
}
}
4.9 Mixed Chart
เป็นการรวมแผนภูมิเข้าด้วยกัน โดยระบุหลาย Type
{
"type": "bar",
"data": {
"labels": [ "มกราคม", "กุมภาพันธ์", "มีนาคม", "เมษายน", "พฤษภาคม" ],
"datasets": [
{ "label": "หมา", "data": [ 50, 60, 70, 180, 190 ] },
{ "label": "แมว", "data": [ 100, 200, 300, 400, 500 ] },
{ "type": "line", "fill": "false", "label": "มันฝรั่ง", "data": [ 100, 400, 200, 400, 700 ] }
]
},
"options": {
"plugins": {
"title": {
"display": "true",
"text": "Mixed Chart"
}
}
}
}
4.10 Box & Violin
เป็นการรวมแผนภูมิเข้ Box & Violin
{
"type": "violin",
"data": {
"labels": [ 2012, 2013, 2014, 2015 ],
"datasets": [
{
"label": "ชุดข้อมูล",
"data": [
[ 12, 6, 3, 4 ],
[ 1, 8, 8, 15 ],
[ 1, 1, 1, 2, 3, 5, 9, 8 ],
[ 19, -3, 18, 8, 5, 9, 9 ]
]
}
]
},
"options": {
"elements": {
"line": { "borderWidth": 3 }
},
"plugins": {
"title": {
"display": "true",
"text": "Box & Violin Chart"
}
}
}
}
4.11 Progress Bar
เป็นแผนภูมิแท่งแบบพิเศษ ชุดข้อมูลระบุหมายเลขที่แสดงผล ตัวเลขนี้คือเปอร์เซ็นต์รวมคือ 100 หากข้อมูลของยังไม่เต็ม 100 สามารถเพิ่มชุดข้อมูลชุดที่สองเพื่อรวมผลได้
{
"type": "progressbar",
"data": {
"datasets": [
{
"data": [80],
"backgroundColor": ["rgba(51, 205, 101, 0.7)"],
"borderColor": ["rgba(51, 147, 255, 1)"]
}
]
},
"options": {
"plugins": {
"title": {
"display": "true",
"text": "Progress Bar"
}
}
}
}
4.12 Sparkline
เส้นแผนภูมิที่มีลักษณะคล้ายประกายไฟ เป็นแผนภูมิเชิงเส้นแบบพิเศษ
{
"type": "sparkline",
"data": {
"datasets": [
{
"data": [ 140, 60, 274, 370, 199, 250, 150, 160, 70 ]
}
]
},
"options": {
"plugins": {
"title": {
"display": "true",
"text": "Sparkline Chart"
}
}
}
}
4.13 Radial gauge
{
"type": "radialgauge",
"data": {
"datasets": [
{
"data": [80],
"backgroundColor": ["rgba(51, 51, 255, 1)"],
"borderColor": ["rgba(51, 147, 255, 1)"]
}
]
},
"options": {
"plugins": {
"title": {
"display": "true",
"text": "Radial gauge"
}
}
}
}
4.14 QR Code
{
"type": "qr",
"data": "https://www.nso.go.th/"
}
4.15 Wordcloud
เส้นแผนภูมิที่มีลักษณะคล้ายประกายไฟ เป็นแผนภูมิเชิงเส้นแบบพิเศษ
{
"type": "wordcloud",
"data": {
"color": "#E9590C",
"datasets": [
{ "key": "word", "value": 10 },
{ "key": "cloud", "value": 8 },
{ "key": "sprite", "value": 7 },
{ "key": "placed", "value": 5 },
{ "key": "layout", "value": 4 },
{ "key": "algorithm", "value": 4 },
{ "key": "area", "value": 3 },
{ "key": "step", "value": 3 },
{ "key": "retrieve", "value": 3 },
{ "key": "operation", "value": 3 },
{ "key": "collision", "value": 3 },
{ "key": "candidate", "value": 3 },
{ "key": "32", "value": 2 },
{ "key": "placement", "value": 2 },
{ "key": "time", "value": 2 },
{ "key": "possible", "value": 2 },
{ "key": "even", "value": 2 },
{ "key": "simple", "value": 2 },
{ "key": "starting", "value": 2 },
{ "key": "previously", "value": 2 },
{ "key": "move", "value": 2 },
{ "key": "perform", "value": 2 },
{ "key": "hierarchical", "value": 2 },
{ "key": "draw", "value": 2 },
{ "key": "pixel", "value": 2 },
{ "key": "data", "value": 2 },
{ "key": "separately", "value": 2 },
{ "key": "expensive", "value": 2 },
{ "key": "pixels", "value": 2 },
{ "key": "masks", "value": 2 },
{ "key": "implementation", "value": 2 },
{ "key": "detection", "value": 2 },
{ "key": "larger", "value": 2 },
{ "key": "whole", "value": 2 },
{ "key": "comparing", "value": 2 },
{ "key": "box", "value": 2 },
{ "key": "large", "value": 2 },
{ "key": "think", "value": 2 },
{ "key": "version", "value": 2 },
{ "key": "single", "value": 2 }
]
},
"options": {
"plugins": {
"title": {
"display": "true",
"text": "Word Clouds"
}
}
}
}
4.15 GraphViz
{
"type": "graphviz",
"data": [
{ "nodes": [ { "id": "main" }, { "id": "init" } ] },
{ "nodes": [ { "id": "main" }, { "id": "parse" } ] },
{ "nodes": [ { "id": "main" }, { "id": "cleanup" } ] },
{ "nodes": [ { "id": "init" }, { "id": "make_string" } ] },
{ "nodes": [ { "id": "parse" }, { "id": "execute" } ] },
{ "nodes": [ { "id": "execute" }, { "id": "make_string" } ] },
{ "nodes": [ { "id": "execute" }, { "id": "compare" } ] },
{ "nodes": [ { "id": "execute" }, { "id": "printf" } ] },
{ "nodes": [ { "id": "main" }, { "id": "printf" } ] },
{ "nodes": [ { "id": "execute" }, { "id": "compare" } ] }
],
"options": {
"plugins": {
"title": {
"display": "true",
"text": "GraphViz"
}
}
}
}