φυβλαςのβλογ
บล็อกของ phyblas



numpy & matplotlib เบื้องต้น บทที่ ๑๓: ฮิสโทแกรม
เขียนเมื่อ 2016/06/11 22:05
ในบทที่แล้วพูดถึงแผนภูมิแท่งไปแล้ว บทนี้จะพูดถึงแผนภูมิแท่งที่มีรูปแบบพิเศษชนิดหนึ่ง นั่นคือฮิสโทแกรม

ฮิสโทแกรมคือแผนภูมิแท่งที่มีไว้ใช้แจกแจงความถี่ของข้อมูล ว่าข้อมูลในแต่ละช่วงมีจำนวนเท่าไหร่ มีความสำคัญมากในการวิเคราะห์ทางสถิติ



การสร้างฮิสโทแกรม
เราจะสร้างฮิสโทแกรมจาก plt.bar ก็ได้ แต่ก็ยุ่งยาก ใน matplotlib มีฟังก์ชันที่ใช้สร้างฮิสโทแกรมโดยเฉพาะ นั่นคือ plt.hist

การใช้ hist นั้นต้องการอาร์กิวเมนต์แค่ตัวเดียวคือกลุ่มข้อมูลที่ต้องการนำมาแจกแจง ความถี่ และมีคีย์เวิร์ดที่สำคัญตัวหนึ่งคือ bins คือจำนวนช่วงของข้อมูลที่ต้องการแบ่ง

ตัวอย่าง
import numpy as np
import matplotlib.pyplot as plt

x = np.linspace(-10,10,1000)**3
plt.hist(x,bins=100)
plt.show()



หากใส่คีย์เวิร์ด normed=1 ไปด้วยจะเป็นการนอร์มาไลซ์ คือคิดค่าข้อมูลเป็นสัดส่วนต่อข้อมูลทั้งหมด ซึ่งบวกกันทั้งหมดแล้วจะเป็น 1
x = np.linspace(-10,10,1000)**3
plt.hist(x,bins=100,normed=1,color='g')
plt.show()





การนำข้อมูลหลายชุดมาประกอบกัน
หากมีข้อมูลอยู่หลายชุดสามารถใส่อาร์กิวเมนต์เป็นลิสต์ของชุดข้อมูล แล้วข้อมูลจะทำการผูกติดเข้าด้วยกันโดยอัตโนมัติ
x1 = np.linspace(-10,10,1000)**3
x2 = np.linspace(-10,10,2000)**3+500
x3 = np.linspace(-10,10,1000)**3+1000
plt.hist([x1,x2,x3],bins=10)
plt.show()



ถ้าเพิ่มคีย์โดยใส่ stacked=1 ลงไปจะกลายเป็นว่ารวมต่อกันในแนวตั้ง
x1 = np.linspace(-10,10,1000)**3
x2 = np.linspace(-10,10,2000)**3+500
x3 = np.linspace(-10,10,1000)**3+1000
plt.hist([x1,x2,x3],bins=10,stacked=1,ec='k')
plt.show()



จะลองใส่แยกโดยใช้ hist ๓ ครั้งก็ได้ จะได้ฮิสโตแกรมที่ซ้อนทับกัน ถ้าอยากให้เห็นทั้งหมดก็ใส่คีย์เวิร์ด alpha ลงไปให้มีความโปร่งใสขึ้นมาได้
x1 = np.linspace(-10,10,1000)**3
x2 = np.linspace(-10,10,2000)**3+500
x3 = np.linspace(-10,10,1000)**3+1000
plt.hist(x1,bins=10,alpha=0.5,ec='k')
plt.hist(x2,bins=10,alpha=0.5,ec='k')
plt.hist(x3,bins=10,alpha=0.5,ec='k')
plt.show()





การกำหนดช่วงของช่องเอาเอง
จำนวนแท่งของฮิสโทแกรมนั้นปกติจะกำหนดจากค่า bins ที่ใส่ลงไป แต่ค่า bins นั้นนอกจากจะกำหนดเป็นจำนวนช่องแล้ว หากต้องการกำหนดช่วงตามที่ต้องการเองก็ยังทำได้ด้วย โดยใช้ใส่ค่า bins เป็นลิสต์ของค่าตำแหน่งที่จะใช้เป็นตัวแบ่ง

กรณีนี้เราสามารถสร้างแท่งฮิสโทแกรมที่มีช่วงแบ่งไม่สม่ำเสมอได้

ตัวอย่าง
x1 = np.linspace(-10,10,1000)**3
x2 = np.linspace(-10,10,2000)**3+500
x3 = np.linspace(-10,10,1000)**3+1000
bins = np.linspace(-10,10,10)**3
plt.hist([x1,x2,x3],bins=bins,stacked=1,ec='k')
plt.show()



จะเห็นว่าช่วงแบ่งไม่จำเป็นจะต้องสม่ำเสมอเท่ากันหมด แต่ถ้าเราแบ่งช่วงให้ไม่เท่ากันก็จะได้แผนภูมิที่แท่งกว้างไม่เท่ากันด้วย



ฮิสโทแกรมแนวนอน
เช่นเดียวกับแผนภูมิแท่งธรรมดา ฮิสโทแกรมเองก็สามารถทำให้วางแนวนอนได้ แต่ว่าไม่ใช่ด้วยการใช้ฟังก์ชันตัวอื่น แค่ต้องเพิ่มคีย์เวิร์ดลงไปเท่านั้น

แค่ใส่ orientation='horizontal' ลงไปเท่านี้แผนภูมิก็จะเรียงในแนวนอน

ตัวอย่าง
x1 = np.linspace(-1,1,10000)**3
plt.hist(x1,bins=100,alpha=0.5,orientation='horizontal')
plt.show()





อ้างอิง


<< บทที่แล้ว     บทถัดไป >>
หน้าสารบัญ


-----------------------------------------

囧囧囧囧囧囧囧囧囧囧囧囧囧囧囧囧囧囧囧囧囧囧囧囧囧

ดูสถิติของหน้านี้

หมวดหมู่

-- คอมพิวเตอร์ >> เขียนโปรแกรม >> python >> matplotlib

ไม่อนุญาตให้นำเนื้อหาของบทความไปลงที่อื่นโดยไม่ได้ขออนุญาตโดยเด็ดขาด หากต้องการนำบางส่วนไปลงสามารถทำได้โดยต้องไม่ใช่การก๊อปแปะแต่ให้เปลี่ยนคำพูดเป็นของตัวเอง หรือไม่ก็เขียนในลักษณะการยกข้อความอ้างอิง และไม่ว่ากรณีไหนก็ตาม ต้องให้เครดิตพร้อมใส่ลิงก์ของทุกบทความที่มีการใช้เนื้อหาเสมอ

สารบัญ

รวมคำแปลวลีเด็ดจากญี่ปุ่น
python
-- numpy
-- matplotlib

-- pandas
-- pytorch
maya
การเรียนรู้ของเครื่อง
-- โครงข่าย
     ประสาทเทียม
บันทึกในญี่ปุ่น
บันทึกในจีน
-- บันทึกในปักกิ่ง
บันทึกในไต้หวัน
บันทึกในยุโรปเหนือ
บันทึกในประเทศอื่นๆ
เรียนภาษาจีน
qiita
บทความอื่นๆ

บทความแบ่งตามหมวด



ติดตามอัปเดตของบล็อกได้ที่แฟนเพจ

  ค้นหาบทความ

  บทความแนะนำ

หลักการเขียนทับศัพท์ภาษาจีนกวางตุ้ง
การใช้ unix shell เบื้องต้น ใน linux และ mac
หลักการเขียนทับศัพท์ภาษาจีนกลาง
g ในภาษาญี่ปุ่นออกเสียง "ก" หรือ "ง" กันแน่
ทำความรู้จักกับปัญญาประดิษฐ์และการเรียนรู้ของเครื่อง
ค้นพบระบบดาวเคราะห์ ๘ ดวง เบื้องหลังความสำเร็จคือปัญญาประดิษฐ์ (AI)
หอดูดาวโบราณปักกิ่ง ตอนที่ ๑: แท่นสังเกตการณ์และสวนดอกไม้
พิพิธภัณฑ์สถาปัตยกรรมโบราณปักกิ่ง
เที่ยวเมืองตานตง ล่องเรือในน่านน้ำเกาหลีเหนือ
บันทึกการเที่ยวสวีเดน 1-12 พ.ค. 2014
แนะนำองค์การวิจัยและพัฒนาการสำรวจอวกาศญี่ปุ่น (JAXA)
เล่าประสบการณ์ค่ายอบรมวิชาการทางดาราศาสตร์โดยโซวเคนได 10 - 16 พ.ย. 2013
ตระเวนเที่ยวตามรอยฉากของอนิเมะในญี่ปุ่น
เที่ยวชมหอดูดาวที่ฐานสังเกตการณ์ซิงหลง
บันทึกการเที่ยวญี่ปุ่นครั้งแรกในชีวิต - ทุกอย่างเริ่มต้นที่สนามบินนานาชาติคันไซ
หลักการเขียนทับศัพท์ภาษาญี่ปุ่น
ทำไมจึงไม่ควรเขียนวรรณยุกต์เวลาทับศัพท์ภาษาต่างประเทศ
ทำไมถึงอยากมาเรียนต่อนอก
เหตุผลอะไรที่ต้องใช้ภาษาวิบัติ?

ไทย

日本語

中文