စာတစ်မျက်နှာတွင် ဂရပ်များ ဆွဲခြင်း(Matplotlib Object Hierarchy)

ပုံမှန်အားဖြင့် ဂရပ်တစ်ခုမှာ X ဝင်ရိုးနှင့် Y ဝင်ရိုး ဆိုပြီး (၂)ခုရှိသည်။ ဂရပ်ဆွဲတဲ့အခါ X တန်ဖိုးတွေကို X ဝင်ရိုးပေါ်မှာ ချ ပြီးရင် Y တန်ဖိုးတွေကို Y ဝင်ရိုးပေါ်မှာ ချ ပြီးတော့ ဖြတ်မှတ်တွေကို ဆက်ရင် ဂရပ်ရသည်။

In [1]:
import matplotlib.pyplot as plt
x = [1, 2, 3, 4]
y = [1, 2, 3, 4]
plt.plot(x,y)             # လိုင်း ဂရပ်ဆွဲသည်။ 
plt.show()                # ဆွဲထားသည့် ဂရပ်ကို ဖော်ပြရန် 

plt.plot() ထဲတွင် names ,values ထည့်ပေးသည်။

In [2]:
import matplotlib.pyplot as plt
plt.figure(figsize=(9, 3))       # ဂရပ်ပုံ အရွယ်အစား သတ်မှတ်ပေးသည်။ 

names = ['group_a', 'group_b', 'group_c']
values = [1, 10, 100]
plt.plot(names ,values)         # လိုင်း ဂရပ်ဆွဲသည်။ 
plt.show()                      # ဆွဲထားသည့် ဂရပ်ကို ဖော်ပြရန် 

plt.bar() ဖြင့် ဘားဂရပ် ဆွဲခြင်း

In [3]:
plt.bar(names, values) # အပေါ်တွင် တို့ ရေးပြီးသောကြောင့် တစ်ကြောင်းတည်းဖြင့် ဆွဲနိုင်သည်။ 
Out[3]:
<BarContainer object of 3 artists>

plt.scatter() ဖြင့် စကက်တာဂရပ် ဆွဲခြင်း

In [4]:
plt.scatter(names, values) # အပေါ်တွင် တို့ ရေးပြီးသောကြောင့် တစ်ကြောင်းတည်းဖြင့် ဆွဲနိုင်သည်။ 
Out[4]:
<matplotlib.collections.PathCollection at 0x1abc5bc0c88>

စာတစ်မျက်နှာတွင် ဂရပ် (၃)ပုံ ဆွဲခြင်း

Matplotlib Object Hierarchy

Matplotlib ကို အသုံးပြုသည့်အခါ Object Hierarchy ဆိုသည့် ဝေါဟာရကို သိထားရန်လိုသည်။ Matplotlib တွင် Python object များသည် အလွှာလိုက် အထပ်လိုက်(nested)ရှိနေသည်။ Hierarchy ဆိုသည်မှာ တစ်ခုပေါ်တွင် တစ်ခု အဆင့်ဆင့် ရှိနေခြင်းကို ဆိုလိုသည်။ ဥပမာ ပန်းချီကားတစ်ချပ် ဆွဲရန်အတွက် ဘောင်ရှိရမည်။ ထိုဘောင်ပေါ်တွင် ကင်းဘတ်စ်စကို တင်းနေအောင် တင်ထားရမည်။ ထို ကင်းဘတ်စ်စပေါ်တွင် ခံဆေးသုတ်ရန် လိုသည့်အခါ ခံဆေးသုတ်ရသည်။ အားလုံးအဆင်သင့် ဖြစ်သည့်အခါမှာ ပန်းချီ စဆွဲနိုင်သည်။ ထို့အတူ ဂရပ်တစ်ခု ဆွဲရန်အတွက် လိုအပ်သည့် ပြင်ဆင်မှုအဆင့်ဆင့်ရှိသည်။ ထိုအဆင့်များသည် Hierarchy ဖြစ်သည်။

Matplotlib ကို သုံးမည့် သူတိုင်း Figure object နှင့် Axes objects အကြောင်းကို ကွဲပြားစွာ နားလည် သဘောပေါက်ထားသင့်သည်။ Figure object သည် ကင်းဘတ်စ်စ နှင့်တူသည်။ Matplotlib plot တွင် အခြေခံအကျဆုံး ဖြစ်သည်။ Axes object များသည် ပန်းချီ ရုပ်ပုံများနှင့်တူသည်။ တစ်ခါတစ်ရံ ရုပ်ပုံများစွာ ရေးဆွဲသည့်အခါ Axes တစ်ခုသည် ရုပ်ပုံတစ်ခု ဖြစ်သည်။ ထို့ကြောင့် Figure object ဆိုသည့် ကင်းဘတ်စ်စ ပေါ်တွင် Axes object ဆိုသည့် ရုပ်ပုံ များစွာ ရှိနေနိုင်သည်။

Matplot ဝေါဟာရ ဖြင့်ပြောလျှင် Axes ဆိုသည်မှာ ဂရပ်ငယ်ကလေးများ ဖြစ်သည်။ (The Axes represent an individual plot.)။ Figure ထဲတွင် Axes တစ်ခု သို့မဟုတ် တစ်ခုထက်ပိုများသည့် ဂရပ်ငယ်ကလေး(subplot)များ ရှိနေနိုင်သည်။ (Figure object as a box-like container containing one or more Axes.) လူရုပ်ပုံ ငှက်ပုံများတွင် ခေါင်း၊ ခြေ၊ လက် စသည်တို့ ရှိသကဲ့သို့ Axes တစ်ခုတွင်လည်း tick marks, lines, legends, title and text-boxes စသည်တို့ ပါဝင်သည်။

In [5]:
# စာတစ်မျက်နှာတွင် ဂရပ် (၃)ပုံ ရန်နေရာချပုံ ( 1 rows x 3 columns)
plt.figure(figsize=(9, 3))       # ဂရပ်ပုံ အရွယ်အစား သတ်မှတ်ပေးသည်။ 

plt.subplot(131)       # 131 --> 1 row, 3 column ပုံစံမှ ပထမ Subplot-1
plt.text(.4, .4, "Subplot-1")

plt.subplot(132)       # 132 --> 1 row, 3 column ပုံစံမှ ဒုတိယ Subplot-2
plt.text(.4, .4, "Subplot-2")

plt.subplot(133)       # 133 --> 1 row, 3 column ပုံစံမှ တတိယ Subplot-3
plt.text(.4, .4, "Subplot-3")

plt.show()

စာတစ်မျက်နှာတွင် ဂရပ် (၄)ပုံ နေရာချရန်

In [6]:
# စာတစ်မျက်နှာတွင် ဂရပ် (၄)ပုံ နေရာချပုံ ( 2 rows x 2 columns)

plt.figure(figsize=(9, 5))       # ဂရပ်ပုံ အရွယ်အစား သတ်မှတ်ပေးသည်။ 

plt.subplot(221)       # 22-1 --> 2 row, 2 column ပုံစံမှ ပထမ Subplot-1
plt.text(.4, .4, "Subplot-1")

plt.subplot(222)       # 22-2 --> 2 row, 2 column ပုံစံမှ ဒုတိယ Subplot-2
plt.text(.4, .4, "Subplot-2")

plt.subplot(223)       # 22-3 --> 2 row, 2 column ပုံစံမှ တတိယ Subplot-3
plt.text(.4, .4, "Subplot-3")

plt.subplot(224)       # 22-4 --> 2 row, 2 column ပုံစံမှ စတုတ္ထ Subplot-4
plt.text(.4, .4, "Subplot-4")

plt.show()

ဒေတာများဖြင့် ပုံဆွဲခြင်း (၃ပုံ)

In [7]:
names = ['group_a', 'group_b', 'group_c']
values = [1, 10, 100]

plt.figure(figsize=(9, 3))

plt.subplot(131)           # 131 --> 1 row, 3 column ပုံစံမှ ပထမ Subplot-1
plt.bar(names, values)

plt.subplot(132)           # 132 --> 1 row, 3 column ပုံစံမှ ဒုတိယ Subplot-2
plt.scatter(names, values)

plt.subplot(133)           # 131 --> 1 row, 3 column ပုံစံမှ တတိယ Subplot-3
plt.plot(names, values)

plt.suptitle('Categorical Plotting')
plt.show()

ဒေတာများဖြင့် ပုံဆွဲခြင်း (၄ပုံ)

In [8]:
names = ['group_a', 'group_b', 'group_c']
values = [1, 10, 100]

plt.figure(figsize=(9,6))

plt.subplot(221)                # 22-1 --> 2 row, 2 column ပုံစံမှ ပထမ Subplot-1
plt.bar(names, values)

plt.subplot(222)                # 22-2 --> 2 row, 2 column ပုံစံမှ ဒုတိယ Subplot-2
plt.pie(values, labels= names ) # Pie Chart

plt.subplot(223)                # 22-3 --> 2 row, 2 column ပုံစံမှ တတိယ Subplot-3
plt.scatter(names, values)

plt.subplot(224)                # 22-4 --> 2 row, 2 column ပုံစံမှ စတုတ္ထ Subplot-4
plt.plot(names, values)

plt.suptitle('Categorical Plotting')
plt.show()

-End-