ในบทความนี้เราจะมาเรียนรู้เรื่องการสร้างกราฟใน Python ด้วย Library ที่ชื่อว่า Matplotlib กันครับ การสร้างกราฟใน Python ด้วย Matplotlib นั้นเป็นอะไรที่ต่างจากการสร้างกราฟที่เราเคยทำใน Excel หรือ Power BI แบบสุดๆ เพราะว่าใน Excel แล้วใช้ User Interface เป็นหลัก เพื่อกำหนดว่ากราฟจะเป็นแบบไหน สีอะไร แต่ใน Python จะต้องใช้การเขียน Code เพื่อสั่งมัน
Matplotlib เป็น Module พื้นฐานในการสร้างกราฟใน Python โดยที่เราจะนำไปต่อยอดด้วย Module อื่นที่ทำกราฟได้สวยขึ้นเช่น Seaborn ด้วย (จะพูดถึงในตอนถัดไป)
ซึ่งความรู้ทั้งหมดนี้นี่จะช่วยให้พวกเราสามารถสร้างกราฟหน้าตาแปลกๆ ขึ้นมาใช้เองด้วยการเรียกใช้ Python Script ใน Power BI ได้ด้วยนะครับ ดังนั้นเรียนรู้ไว้ไม่เสียหายแน่นอน
Install Matplotlib
คำสั่งนี้เรียกครั้งเดียวใน command prompt เพื่อให้ computer เราโหลด script ของ library ตัวนี้มาจาก internet นะ
pip install matplotlib
Import Matplotlib
import matplotlib.pyplot as plt
Concept การทำงานของ Matplotlib
การสร้างกราฟใน Python ด้วย Matplotlib นั้นเราจะต้องเขียน Code เพื่อสั่งว่ากราฟของเราจะมีส่วนประกอบอะไร หน้าตายังไงบ้าง?
เช่น กราฟเป็นประเภทอะไร? ค่า x และ y เป็นอะไร? title แกน x,y คืออะไร? ซึ่งสามารถใส่คำสั่งเพิ่มไปได้เรื่อยๆ (ไม่จำเป็นต้องสั่งรวดเดียวก็ได้)
โดยที่หลังจากที่เราบอกมันว่าส่วนประกอบเป็นอะไรบ้าง ถ้าเป็นการทำ python ใน script ปกติเราจะยังคงมองไม่เห็นผลลัพธ์ทันที ถ้าอยากจะเห็นว่าเป็นยังไง ต้องสั่งให้มัน show กราฟออกมาจึงจะเห็นได้นะครับ
ซึ่งคำสั่ง plt.show() จะไปไล่หาว่ามี object กราฟอะไรถูกสร้างขึ้นมาบ้าง แล้วก็จะแสดงออกมาทุกอันเลย (อาจมีหลายอันก็ได้)
แต่ถ้าเราทำใน colab มันก็จะแสดงกราฟออกมาเลยทันทีโดยครับ
เริ่มสร้างกราฟด้วย Matplotlib
เริ่มจากกราฟเส้น
หากเราสั่ง plt.plot(….) มันจะสร้างกราฟเส้นทันที (ถ้าจะ plot กราฟประเภทอื่นต้องสั่งด้วยคำสั่งอื่น) โดยเราสามารถระบุค่า x และ ค่า y ที่ต้องการได้ ดังนี้
import matplotlib.pyplot as plt
x = [1,3,4,8]
y = [7,10,8,9]
plt.plot(x,y)
plt.show() #บรรทัดนี้ใน colab ใส่ก็ได้ ไม่ใส่ก็ได้
มันจะให้ผลแบบนี้ ซึ่งจะเห็นว่าเป็นกราฟเส้นซึ่ง plot ค่าระหว่าง x กับ y ต่างๆ
การใส่ชื่อกราฟ และ Legend
ถ้าเราจะ plot หลายเส้นในกราฟเดียวก็สั่งเพิ่มไปเลยแบบนี้ และยังระบุ title กราฟ และ legendได้ด้วย
x = [1,3,4,8]
y = [7,10,8,9]
x2 = [1,2,6,8] # กำหนดค่ากราฟ series ที่สอง
y2 = [3,6,8,10]
plt.plot(x,y,label='Series1') #ระบุ label สำหรับ legend ได้
plt.plot(x2,y2,label='Series2') # plot กราฟ series ที่สอง
plt.xlabel('x-title') #ชื่อแกน x
plt.ylabel('y-title') #ชื่อแกน y
plt.title('ChartTitle1\nChartTitle2') #ชื่อกราฟ ขึ้นบรรทัดใหม่ได้ด้วย \n
plt.legend() #แสดง Legend
plt.show() #บรรทัดนี้ใน colab ใส่ก็ได้ ไม่ใส่ก็ได้
กราฟแท่ง และการกำหนดสี
ถ้าอยากจะให้ plot กราฟแท่ง ก็ให้ใช้คำสั่ง plt.bar แทนที่จะเป็น plt.plot แค่นั้นเอง นอกจากนั้นเราสามารถกดหนดสีของแท่งได้ด้วย argument ที่ชื่อว่า color
x = [1,3,4,8]
y = [7,10,8,9]
x2 = [1,2,6,8]
y2 = [3,6,8,10]
plt.bar(x,y,label='Series1') #ใช้ plt.bar สร้างกราฟแท่ง
plt.bar(x2,y2,label='Series2', color='red') #กำหนดสีได้
plt.xlabel('x-title')
plt.ylabel('y-title')
plt.title('ChartTitle1\nChartTitle2')
plt.legend()
plt.show() #บรรทัดนี้ใน colab ใส่ก็ได้ ไม่ใส่ก็ได้
กราฟอื่นๆ
นอกจาก plt.plot และ plt.bar แล้ว ก็ยังมีกราฟอื่นๆ อีกเพียบเลย ดูตัวอย่างได้ที่นี่
ลองสร้าง Histogram จากข้อมูล dataframe ของ csv
สมมติว่าผมมีข้อมูลความสูงของตัวละครใน Dragonball เป็นไฟล์ csv ผมก็เอามาทำ histogram ได้ดังนี้
import pandas as pd
DBZ=pd.read_csv('https://raw.githubusercontent.com/ThepExcel/download/master/DBZ.csv')
CharHeight=DBZ['Height'] #ดึงค่าคอลัมน์ Height จาก csv มา
bins=range(0,300,20) # สร้าง list (หรือ array ก็ได้) ที่เว้นทีละ 20 จาก 0 ถึง 300
plt.hist(CharHeight,bins,histtype='bar',rwidth=0.9) # กำหนดความกว้างแท่งคือ 0.9 เพราะ 1 จะติดกันเลย
plt.show() #บรรทัดนี้ใน colab ใส่ก็ได้ ไม่ใส่ก็ได้
สร้างกราฟหลายอันในรูปเดียว
การสร้างกราฟหลายๆ กราฟใน figure รูปเดียว นั้นเราสามารถวางตำแหน่งได้ตามต้องการว่าจะวางกราฟแต่ละอันเอาไว้ตรงไหน ซึ่งทำได้หลายวิธี เช่น ใช้คำสั่ง subplot หรือ subplot2grid ก็ได้
แต่วิธีที่ผมคิดว่ายืดหยุ่นดีคือการใช้คำสั่ง subplot2grid ซึ่งจะเป็นการสร้าง grid จำลองขึ้นมา แล้วให้เราระบุว่าจะ plot กราฟไว้ตรงไหนของ grid แล้วให้มันกินพื้นที่ไปแค่ไหน
import matplotlib.pyplot as plt
#subplot2grid(shape, loc, rowspan, colspan)
#ในพื้นที่ 4Rx3C ให้plotตำแหน่ง 0,0 ลงไป 1 แถว ไปทางขวา 3 คอลัมน์
chrt1=plt.subplot2grid((4,3),(0,0),rowspan=1,colspan=3)
#ในพื้นที่ 4Rx3C ให้plotตำแหน่ง 1,0 ลงไป 2 แถว ไปทางขวา 1 คอลัมน์
chrt2=plt.subplot2grid((4,3),(1,0),rowspan=2,colspan=1)
#ในพื้นที่ 4Rx3C ให้plotตำแหน่ง 1,1 ลงไป 3 แถว ไปทางขวา 2 คอลัมน์
chrt3=plt.subplot2grid((4,3),(1,1),rowspan=3,colspan=2)
#ในพื้นที่ 4Rx3C ให้plotตำแหน่ง 3,0 ลงไป 1 แถว ไปทางขวา 1 คอลัมน์
chrt4=plt.subplot2grid((4,3),(3,0),rowspan=1,colspan=1)
ทีนี้เราลองสั่ง plot แต่ละกราฟออกมาได้เลย
import matplotlib.pyplot as plt
#เตรียมพื้นที่
#subplot2grid(shape, loc, rowspan, colspan)
chrt1=plt.subplot2grid((4,3),(0,0),rowspan=1,colspan=3)
chrt2=plt.subplot2grid((4,3),(1,0),rowspan=2,colspan=1)
chrt3=plt.subplot2grid((4,3),(1,1),rowspan=3,colspan=2)
chrt4=plt.subplot2grid((4,3),(3,0),rowspan=1,colspan=1)
#เริ่มสั่ง plot data ลงไปจริงๆ
x = [1,3,4,8]
y = [7,10,8,9]
chrt1.plot(x,y) #สั่ง plot ลงพื้นที่แรก
#เอาข้อมูล DBZ เดิมมาทำต่อ
chrt2.hist(CharHeight,bins,histtype='bar',rwidth=0.9)
x = [1,3,4,8]
y = [7,10,8,9]
x2 = [1,2,6,8]
y2 = [3,6,8,10]
chrt3.bar(x,y,label='Series1') #ใช้ plt.bar สร้างกราฟแท่ง
chrt3.bar(x2,y2,label='Series2', color='red') #กำหนดสีได้
chrt3.legend()
chrt4.plot([1,2,3,4],[6,3,5,8])
plt.show()
ตอนต่อไป Seaborn
สำหรับเนื้อหาเรื่อง Matplotlib เราจะรู้เท่านี้พอก่อน เพราะเดี๋ยวตอนหน้าเราจะเปลี่ยนไปใช้ Seaborn ซึ่งทำกราฟแปลกๆ ได้สะดวกกว่า Matplotlib มากครับ เราค่อยไปเรียนแบบละเอียดกันในนั้นละกันนะ
สารบัญ Series Python
- หัดเขียนโปรแกรม Python สำหรับคนเป็น Excel มาก่อน : ตอนที่ 1
- หัด Python สำหรับคนเป็น Excel : ตอนที่ 2 – ประเภทข้อมูล (Data Types)
- หัด Python สำหรับคนเป็น Excel : ตอนที่ 3 – การวน Loop และ เงื่อนไข if
- หัด Python สำหรับคนเป็น Excel : ตอนที่ 4 – การทำงานกับ String และ List
- หัด Python สำหรับคนเป็น Excel : ตอนที่ 5 – การสร้างฟังก์ชันขึ้นมาใช้เอง (Function)
- หัด Python สำหรับคนเป็น Excel : ตอนที่ 6 – การเรียกใช้ Module / Packages เจ๋งๆ ที่มีคนสร้างไว้แล้ว
- หัด Python สำหรับคนเป็น Excel : ตอนที่ 7 – Web Scraping ด้วย Beautiful Soup
- แนวทางการใช้ Python ใน Power BI
- หัด Python สำหรับคนเป็น Excel : ตอนที่ 8 – การสร้างกราฟด้วย Matplotlib
- รวม Link สอน Python / Programming / AI/ Machine Learning แบบฟรีๆ
- สอนใช้ Python ใน Excel ตอนที่ 1 : ลองใช้ครั้งแรก
- สอนใช้ Python ใน Excel ตอนที่ 2 : List, Loop, Condition
- สอนใช้ Python ใน Excel ตอนที่ 3 : Regular Expression (RegEx)
- สอนใช้ Python ใน Excel ตอนที่ 4 : สร้างฟังก์ชันใช้เอง
- สอนใช้ Python ใน Excel ตอนที่ 5 : สร้างกราฟ Visualization เบื้องต้นด้วย Matplotlib
- การวิเคราะห์ข้อมูลเบื้องต้นด้วย Python: เริ่มต้นด้วย Pandas และ Matplotlib
- เพิ่มยอดขายด้วย Market Basket Analysis : วิเคราะห์คู่สินค้าขายดีด้วย Python
Leave a Reply