Saturday, September 18, 2021

13-Python : Split Two Bar Chart

 Assalam wbt. Jumpa lagi.

Post yang lalu kita telah lihat bagaimana untuk plot multiple carta bar di dalam satu frame. Kali ini kita akan lihat bagaimana untuk plot carta bar terpisah (splitting) atau bar berkembar di dalam satu frame plot yang sama. Data yang digunakan adalah data hujan.dat iaitu contoh sejumlah data hujan harian yang dicerap pada 13 - 25 Disember di beberapa stesen di Semenanjung dan Sabah-Sarawak. Sila copy dan save data sebagai hujan.dat di dalam folder kerja korang.

13 87.8 40.4
14 368.7 53.2
15 696.3 82.4
16 567.8 105.4
17 937.8 271
18 339.1 280
19 447.9 127.6
20 392.1 140.4
21 515 428.2
22 1071.8 202.8
23 936.5 282.4
24 681.8 100.2
25 315.9 59

### copy script from here ##
import numpy as np
import matplotlib.pyplot as plt

plt.rcParams.update({'font.size':12,'font.family':'arial'})

fig = plt.figure(figsize=(6,5)) 
ax=plt.gca()

data1=np.loadtxt('hujan.dat')

day=data1[:,0]
semenanjung=data1[:,1]
sabah=data1[:,2]

N=13
ind = np.arange(N)
width=0.4

# plot bar Semenanjung
barA=ax.bar(ind, semenanjung,color = 'blue', width=width, align='center', label='Semenanjung')

# plot bar Sabah-Sarawak
barB=ax.bar(ind+width, sabah,color = 'red', width=width, align='center', label='Sabah-Sarawak')

# namakan paksi x
name_label=['13','14','15','16','17','18','19','20','21','22',
'23','24','25']

# lokasi label paksi x
ax.set_xticks(ind + width / 2)
ax.set_xticklabels(name_label)

# limit paksi y
plt.ylim(0,1200)

# plot legend
plt.legend(loc='upper center', fontsize=10,
          ncol=2, fancybox=True, shadow=True,facecolor='white')

plt.xlabel('Rainfall Date')
plt.ylabel('Total Daily Rainfall (mm)')
plt.title('Total Daily Rainfall from 13-25 December')

## save output image ##
import inspect
frame = inspect.currentframe()
path = inspect.getfile(frame)
fname = path.split('.')[0]
plt.savefig(fname + ".png",dpi=280, bbox_inches='tight')
plt.show()

#### end copy here ##

Paparan Imej:

Catatan:
a) Command plt.rcParams.update({'font.size':12,'font.family':'arial'}) merujuk kepada default setting saiz font dan jenis font yang digunakan untuk keseluruhan plot.

b) command ax=plt.gca() merujuk kepada sebarang tambahan plot di dalam frame.

c) command align='center' merujuk kepada setting bar di tengah.

d) command label='Sabah-Sarawak' merujuk kepada label yang diberikan kepada bar.

e) command name_label= ['13','14','15','16','17','18','19','20','21',
'22','23','24','25'] adalah label yang diberikan di paksi x. Pastikan ianya adalah data string.

f) command ax.set_xticks(ind + width / 2) adalah setting agar label di paksi x berada betul-betul ditengah antara 2 bar.

g) command plt.ylim(0,1200) adalah nilai had maksimum yang ditetapkan di paksi y.

h)command plt.legend(loc='upper center', fontsize=10,ncol=2, fancybox=True, shadow=True,facecolor='white') merujuk kepada setting legend yang terletak di atas tengah dengan ciri-ciri tambahan seperti ada shadow box,background putih, font 10 serta bilangan column adalah 2. Semua ciri tambahan boleh diubahsuai ikut keselesaan korang.

Selamat mencuba!





No comments:

Post a Comment

23-Python : Plotting Temperature Histogram

  Assalamualaikum wbt dan jumpa lagi. Post kali ini kita akan cuba untuk membuat analisa taburan suhu purata setiap data yang telah dibelakk...