Bar chart,直方圖,常運用於單一獨立個體內的某參數的比較,例如各個國家的幸福指數。

在Python ython 中使用的指令為:

plt.bar

 

下面針對幾個比較Bar 常使用的表示寫成的template:

 

基本表示(直向):

import matplotlib.pyplot as plt
import numpy as np
# Test data
city=['Delhi','Beijing','Washinton','Tokyo','Moscow']
Happy_index=[60,40,70,65,85]
# 圖形
fig=plt.figure()
plt.bar(city,Happy_index,color='blue',edgecolor='black')

#名稱修改區
figure_name='Happiness index of every city'
file_name='Happiness inex of cities.png'
x_name='City'
y_name='Happiness index'

#修改執行區
plt.title(figure_name,fontsize=20)
plt.xlabel(x_name,fontsize=16)
plt.ylabel(y_name,fontsize=16)
plt.tick_params(direction='in',length=5,labelsize=12)
fig.savefig(file_name)
plt.show()

執行如下圖:

基本表示(橫向):

幾本上是將plt.bar 改成 plt.barh, X,Y 軸名稱更換

import matplotlib.pyplot as plt
import numpy as np
# Test data
city=['Delhi','Beijing','Washinton','Tokyo','Moscow']
Happy_index=[60,40,70,65,85]
# 圖形
fig=plt.figure()
plt.barh(city,Happy_index,color='blue',edgecolor='black')

#名稱修改區
figure_name='Happiness index of every city'
file_name='Happiness inex of cities.png'
x_name='Happiness index'
y_name='City'
legend_name=['Happiness index of each city']

#修改執行區
plt.title(figure_name,fontsize=20)
plt.xlabel(x_name,fontsize=16)
plt.ylabel(y_name,fontsize=16)
plt.tick_params(direction='in',length=5,labelsize=12)
plt.legend(legend_name)
fig.savefig(file_name)
plt.show()

執行的結果如下

堆疊長條圖(直向):

當獨立個體中又有其他子個體,則可以使用堆疊常條圖 或並列常條圖使用

import matplotlib.pyplot as plt
import numpy as np
#####Test data
city=['A city','B city','C city','D city','E city']
Happiness_men=[60,40,70,65,85]
Happiness_women=[30,60,70,55,75]
chid=[65,70,80,70,90]
#####圖形
pos=np.arange(len(city))
fig=plt.figure(figsize=(8,6))
plt.bar(pos,Happiness_men,width=0.5,color='blue',edgecolor='black')
plt.bar(pos,Happiness_women,width=0.5,color='pink',edgecolor='black',bottom=np.array(Happiness_men))
plt.bar(pos,chid,width=0.5,color='green',edgecolor='black',bottom=np.array(Happiness_men)+np.array(Happiness_women))

#####名稱修改區
figure_name='Happiness index of every city'
file_name='Happiness inex of cities.png'
x_name='City'
y_name='Happiness index'
legend_name=['Male','Female','child']

#####修改執行區
plt.title(figure_name,fontsize=20)
plt.xlabel(x_name,fontsize=16)
plt.ylabel(y_name,fontsize=16)
plt.xticks(pos,city)
plt.tick_params(direction='in',length=5,labelsize=14)
plt.legend(legend_name)
fig.savefig(file_name)
plt.show()

堆疊長條圖(橫向):

橫向的堆疊圖架構基本上跟直向差不多,藍色區域是需要修改的地方

import matplolib.pyplot as plt
import numpy as np
#####Test data
city=['A city','B city','C city','D city','E city']
Happiness_men=[60,40,70,65,85]
Happiness_women=[30,60,70,55,75]
chid=[65,70,80,70,90]
#####圖形
pos=np.arange(len(city))
fig=plt.figure(figsize=(8,6))
plt.
barh(pos,Happiness_men,height=0.5,color='blue',edgecolor='black')
plt.
barh(pos,Happiness_women,height=0.5,color='pink',edgecolor='black',left=np.array(Happiness_men))
plt.
barh(pos,chid,color='green',height=0.5,edgecolor='black',left=np.array(Happiness_men)+np.array(Happiness_women))

#####名稱修改區
figure_name='Happiness index of every city'
file_name='Happiness inex of cities.png'

x_name='Happiness index'
y_name='City'

legend_name=['Male','Female','child']

#####修改執行區
plt.title(figure_name,fontsize=20)
plt.xlabel(x_name,fontsize=16)
plt.ylabel(y_name,fontsize=16)
plt.
yticks(pos,city)
plt.tick_params(direction='in',length=5,labelsize=14)
plt.legend(legend_name)
fig.savefig(file_name)
plt.show()

分組長條圖(直向):

如果想比較子個體,則可以以分組長條圖表示

import matplotlib.pyplot as plt
import numpy as np
#####Test data
city=['A city','B city','C city','D city','E city']
Happiness_men=[60,40,70,65,85]
Happiness_women=[30,60,70,55,75]
chid=[65,70,80,70,90]
#####圖形
pos=np.arange(len(city))
bar_width=0.2
fig=plt.figure(figsize=(8,6))
plt.bar(pos-bar_width,Happiness_men,width=0.2,color='blue',edgecolor='black')
plt.bar(pos,Happiness_women,width=0.2,color='pink',edgecolor='black')
plt.bar(pos+bar_width,chid,width=0.2,color='green',edgecolor='black')

#####名稱修改區
figure_name='Happiness index of every city'
file_name='Happiness inex of cities.png'
x_name='City'
y_name='Happiness index'
legend_name=['Male','Female','child']

#####修改執行區
plt.title(figure_name,fontsize=20)
plt.xlabel(x_name,fontsize=16)
plt.ylabel(y_name,fontsize=16)
plt.xticks(pos,city)
plt.tick_params(direction='in',length=5,labelsize=14)
plt.legend(legend_name)
fig.savefig(file_name)
plt.show()

分組長條圖(橫向):

 

import matplotlib.pyplot as plt
import numpy as np
#####Test data
city=['A city','B city','C city','D city','E city']
Happiness_men=[60,40,70,65,85]
Happiness_women=[30,60,70,55,75]
chid=[65,70,80,70,90]
#####圖形
pos=np.arange(len(city))
bar_height=0.2
fig=plt.figure(figsize=(8,6))
plt.barh(pos-bar_height,Happiness_men,height=0.2,color='blue',edgecolor='black')
plt.barh(pos,Happiness_women,height=0.2,color='pink',edgecolor='black')
plt.barh(pos+bar_height,chid,height=0.2,color='green',edgecolor='black')

#####名稱修改區
figure_name='Happiness index of every city'
file_name='Happiness inex of cities.png'
x_name='Happiness index'
y_name='City'
legend_name=['Male','Female','child']

#####修改執行區
plt.title(figure_name,fontsize=20)
plt.xlabel(x_name,fontsize=16)
plt.ylabel(y_name,fontsize=16)
plt.yticks(pos,city)
plt.tick_params(direction='in',length=5,labelsize=14)
plt.legend(legend_name)
fig.savefig(file_name)
plt.show()

 

arrow
arrow
    全站熱搜
    創作者介紹
    創作者 Mr.Onion 的頭像
    Mr.Onion

    Mr.Onion的部落格

    Mr.Onion 發表在 痞客邦 留言(0) 人氣()