Intouch Kunakorntum
ASquareLab
Published in
3 min readMar 31, 2019

--

Visualize your data on Thailand Map with Tableau

“อยากแสดงข้อมูลเชิงพื้นที่่ในประเทศไทย ทำอย่างไรดี?”

“มีข้อมูลแต่ละจังหวัด แล้วจะเอาไปแปะบนแผนที่อย่างไร?”

“Tableau ไม่เข้าใจชื่อจังหวัดภาษาไทย ทำยังไงดี?”

หรือคำถามอื่นๆที่เกี่ยวกับการนำเสนอข้อมูลบนแผนที่โดยเฉพาะแผนที่ประเทศไทย ที่เรามักจะมีคำถามบ่อยๆ บทความนี้เราจะแสดงขั้นตอนการแสดงข้อมูลบนแผนที่แบบ Step by Step โดยซอฟแวร์ที่เราจะใช้กันในคราวนี้จะมีชื่อว่า Tableau

สำหรับผู้ที่เริ่มต้นศึกษานั้นสามารถดาวน์โหลดโปรแกรมผ่าน https://www.tableau.com/ โดยเฉพาะนักศึกษานั้น จะสามารถขอ License ใช้งานได้ฟรี 1 ปี (และขอใหม่ได้เรื่อยๆถ้าหากเป็นนักศึกษาอยู่ 😂)

“เริ่มต้นยังไงดี?”

ขั้นตอนแรกสุดเลยถ้าเราต้องการจะนำเสนอข้อมูล ก็คือเราต้องมีข้อมูลในการนำเสนอ ซึ่งหากอยากแสดงข้อมูลเชิงพื้นที่ เราจำเป็นจะต้องมีข้อมูลปัจจัยเชิงพื้นที่ เช่น ประเทศ จังหวัด รหัสไปรษณีย์ เป็นต้น 😂 😂 โดยข้อมูลที่เราจะมาลองเล่นกันจะเป็นข้อมูลทางหน่วยงานสาธารณสุขของประเทศไทยที่เปิดเผยได้ โดยจะดึงข้อมูลมาจาก HDCservice มาเล่นกัน (สามารถคลิกได้ที่ลิงค์)

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

ตัวอย่างข้อมูลจาก HDCservice

โดยสำหรับคนอื่นที่ยังไม่มีข้อมูลแต่อยากฝึกฝีมือกันจะมีแหล่งข้อมูลตัวอย่างมากมายบนโลกออนไลน์ที่สามารถดาวน์โหลดมาใช้ได้ฟรี เช่น
https://www.kaggle.com/datasets
หรือข้อมูลจากประเทศไทยจากหน่วยงานต่างๆ เช่น
https://data.go.th/Datasets.aspx
http://statbbi.nso.go.th

“ มีข้อมูลอยู่แล้ว โหลดโปรแกรมแล้ว ทำยังไงต่อ?”

เมื่อข้อมูลพร้อมแล้ว เราจะมาสร้างแผนที่ง่ายๆกัน โดยเริ่มต้นที่เปิดโปรแกรม Tableau และทำการ import ข้อมูลของเราเข้าโปรแกรม

โดยเมื่อเข้ามาโปรแกรมแล้ว ทางด้านซ้ายมือเราสามารถเลือกได้ว่าไฟล์ที่เราจะนำเข้าโปรแกรมเป็นไฟล์ชนิดใด โดยทั่วไปแล้วส่วนใหญ่จะเป็นไฟล์ excel(xlsx), csv, txt ก็จะอยู่ใน 2 เมนูแรก (ถัดไปในบทความ เราจะลงรายละเอียดเกี่ยวกับแผนที่เพิ่มเติม ซึ่งเราจะใช้ในส่วนของ Spatial File แต่ตอนนี้ขอข้ามไปก่อน) เมื่อเลือกเมนูและเลือกไฟล์ที่เราต้องการจะใช้แล้ว โปรแกรมจะแสดงหน้าจอดังนี้

เมื่อเราเลือกไฟล์ที่เราจะเล่นแล้วจะเข้าหน้านี้

โดยข้อมูลที่เราจะนำมาเล่นกันนั้นจะนำเสนออยู่ตรงหน้าจอ อย่างไรก็ตามทีสำหรับข้อมูลของใครที่ชื่อจังหวัดเป็นภาษาอังกฤษ จะสามารถข้ามขั้นตอนต่อไปนี้ได้เลย แต่ถ้าข้อมูลของเราเป็นชื่อจังหวัดภาษาไทย จะต้องแปลงเป็นภาษาอังกฤษก่อน เนื่องจาก Map ใน Tableau รู้จักชื่อจังหวัดในประเทศไทยเป็นภาษาอังกฤษเท่านั้น

การแปลงชื่อจังหวัดจากภาษาไทยเป็นภาษาอังกฤษ

สำหรับวิธีการแปลงนั้น สำหรับวิธีที่ยากที่สุดและถึกที่สุดคือการมานั่งไล่เปลี่ยนตัวข้อมูลจากชื่อภาษาไทยเป็นภาษาอังกฤษ เช่น กรุงเทพ-> Bangkok ในไฟล์เองเลยซึ่งแน่นอนว่าไม่เวิร์คอย่างมาก เพราะมีโอกาสผิดพลาดสูงและยุ่งยากด้วย ดังนั้นจึงมีวิธีที่สอง ได้แก่การ join กับชุดข้อมูลนี้ (สามารถดาวน์โหลดไปใช้กันได้) โดยชุดข้อมูลนี้จะเป็นการเก็บในรูปแบบ dictionary เพื่อแปลงจากภาษาไทยเป็นภาษาอังกฤษได้เลย

ตัวอย่างข้อมูลการแปลงชื่อจังหวัด

โดยสิ่งที่เราต้องทำคือการเพิ่มไฟล์นี้และทำการ join ชื่อจังหวัดเข้าด้วยกัน

  1. ทำการ add ชุดข้อมูลไฟล์ dictionary นี้
  2. ทำการเชื่อมชุดข้อมูลสองข้อมูลเข้าด้วยกัน โดยเราจะต้องกำหนดว่าให้ Column ไหนเป็นตัวเชื่อม โดยดังตัวอย่าง ไฟล์หลักที่เป็นไฟล์ข้อมูลสาธารณสุขเราจะใช้ชื่อ Column ว่า จังหวัด และไฟล์ที่ใช้ในการแมพจะชื่อ Column ว่า Thai Province โดยสุดท้ายแล้วเมื่อเชื่อม จะพบว่าแต่ละ record นั้นจะมีชื่อจังหวัดเป็นภาษาอังกฤษแล้ว

หลังจากที่เราเชื่อมข้อมูลเรียบร้อย เรามาเริ่มกันเลยดีกว่าโดยการคลิกที่ sheet1 ด้านล่างเพื่อเริ่มสร้างภาพ

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

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

โดยแค่นี้เราก็จะสามารถแสดงข้อมูลบนแผนที่ได้เรียบร้อยแล้ว จะเห็นว่าขั้นตอนนั้นง่ายมากสำหรับการสร้างแผนที่ประเทศไทยในโปรแกรม ซึ่งถัดจากนี้จะเป็นบทเสริมในการสร้าง Dashboard

การแสดงของข้อมูลที่เพิ่มขึ้นบนแผนที่

จากตัวอย่างด้านบนจะเห็นว่าเราสามารถแสดงข้อมูล 1 ตัวแปร (จำนวนประชากรในเขตรับผิดชอบ) บนแผนที่ได้ แต่ถ้าหากเราอยากแสดงข้อมูลมากกว่า 1 ตัวแปร พร้อมๆ กัน จะทำอย่างไรดี ตัวอย่างเช่น อยากแสดงข้อมูล “จำนวนประชากรในเขตรับผิดชอบ” และ “จำนวนผู้ป่วยนอกทั้งหมดที่มารับบริการ (ครั้ง)” พร้อมกันบนแผนที่ ซึ่งขั้นตอนที่จะแสดงต่อไปนี้จะเป็นการพล็อต “จำนวนผู้ป่วยนอกทั้งหมดที่มารับบริการ (ครั้ง)” เป็นจุด Overlay บนแผนที่เพิ่มเติมจาก Fill Map (ดังแสดงด้านบน) โดยจะมีขนาดต่างกันตามปริมาณ

เราสามารถทำได้โดยลาก Latitude จากฝั่งซ้ายขึ้นไปไว้ตรงช่อง Rows และคลิกขวาที่ Latitude แล้วเลือก dual axis ดังภาพด้านล่าง

คลิกขวาที่ Latitude ที่เราลากไปและเลือก Dual Axis

หลังจากนั้นเราจะได้แผนที่แบบ 2 Layers แล้ว โดยที่
- Layer ด้านหลังจะเป็นจำนวนประชากรในพื้นที่แสดงเป็น Fill Map
- Layer ด้านหน้าจะเป็นจำนวนผู้ป่วยนอกในพื้นที่แสดงเป็นจุด
โดยเราจะทำการเปลี่ยน Marks จาก Automatic (ซึ่งเป็นแผนที่) เป็น Circle

หลังจากนั้นเราจะทำการลาก “จำนวนผู้ป่วยนอกทั้งหมดที่มารับบริการ (ครั้ง)”ไปไว้ที่ Color และ Size ซึ่งจะหมายถึงว่า จุดในแต่ละจังหวัดนั้นจะขึ้นอยู่กับจำนวนผู้ป่วยนอก ถ้าหากมีจำนวนมากแล้วจะมีสีเข้มและมีขนาดใหญ่ (โดยเราจะสามารถตั้งค่าสีและขนาดได้ตามขั้นตอนเดียวกันกับเปลี่ยนสีพื้นหลัง)

ในบทความนี้แสดงวิธีการพล็อตข้อมูลบนแผนที่ประเทศไทยโดยที่ข้อมูลอยู่ในระดับจังหวัด สำหรับบทความต่อไปเราจะมาดูกันว่าถ้าเรามีข้อมูลแบบ Lat/Lon เช่นที่ตั้งบริษัทแต่ละสาขา เราจะสามารถพล็อตได้อย่างไร? และเราสามารถพลอทแผนที่ในระดับอำเภอหรือตำบลได้หรือไม่? มาติดตามกัน…

Updated : Part 2 ดูได้ผ่านลิงค์นี้ครับ

--

--

Intouch Kunakorntum
ASquareLab

Master’s Student in Computer Engineering Department, KMUTT