目錄
基本用法
多個直方圖并列顯示
顯示直方圖上的數值
多個直方圖堆疊顯示
水準直方圖
相較散點圖和折線圖,柱狀圖(直方圖、條形圖)、餅圖、箱線圖是另外 3 種資料分析常用的圖形,主要用于分析資料内部的分布狀态或分散狀态。
柱狀圖(直方圖、條形圖)主要用于檢視各分組資料的數量分布,以及各個分組資料之間的數量比較。
Matplotlib 中繪制柱狀圖(直方圖、條形圖)的函數為 bar() ,使用文法如下:
atplotlib.pyplot.bar(left, height, width=0.8, bottom=None, hold=None, data=None, **kwargs)
常用參數及說明:
參數 | 接收值 | 說明 | 預設值 |
left | array | x 軸; | 無 |
height | array | 柱形圖的高度,也就是y軸的數值; | 無 |
alpha | 數值 | 柱形圖的顔色透明度 ; | 1 |
width | 數值 | 柱形圖的寬度; | 0.8 |
color(facecolor) | string | 柱形圖填充的顔色; | 随機色 |
edgecolor | string | 圖形邊緣顔色 | None |
label | string | 解釋每個圖像代表的含義 | 無 |
linewidth(linewidths / lw) | 數值 | 邊緣or線的寬度 | 1 |
bar() 其他參數請參考文檔:https://matplotlib.org/api/pyplot_api.html
基本用法
import pandas as pd
import matplotlib.pyplot as plt
#讀取資料
datafile = u'D:\\pythondata\\learn\\matplotlib.xlsx'
data = pd.read_excel(datafile)
plt.figure(figsize=(10,5))#設定畫布的尺寸
plt.title('Examples of Histogram',fontsize=20)#标題,并設定字号大小
plt.xlabel(u'x-year',fontsize=14)#設定x軸,并設定字号大小
plt.ylabel(u'y-income',fontsize=14)#設定y軸,并設定字号大小
#alpha:透明度;width:柱子的寬度;facecolor:柱子填充色;edgecolor:柱子輪廓色;lw:柱子輪廓的寬度;label:圖例;
plt.bar(data['時間'],data['收入_Jay'], alpha=0.6,width = 0.8, facecolor = 'deeppink', edgecolor = 'darkblue', lw=1, label='Jay income')
plt.legend(loc=2)#圖例展示位置,數字代表第幾象限
plt.show()#顯示圖像
多個直方圖并列顯示
通過bar() 中的 width 參數來調節:
import pandas as pd
import matplotlib.pyplot as plt
#讀取資料
datafile = u'D:\\pythondata\\learn\\matplotlib.xlsx'
data = pd.read_excel(datafile)
plt.figure(figsize=(10,5))#設定畫布的尺寸
plt.title('Examples of Histogram',fontsize=20)#标題,并設定字号大小
plt.xlabel(u'x-year',fontsize=14)#設定x軸,并設定字号大小
plt.ylabel(u'y-income',fontsize=14)#設定y軸,并設定字号大小
width_val = 0.4 #若顯示 n 個柱狀圖,則width_val的值需小于1/n ,否則柱形圖會有重合
#alpha:透明度;width:柱子的寬度;facecolor:柱子填充色;edgecolor:柱子輪廓色;lw:柱子輪廓的寬度;label:圖例;
plt.bar(data['時間'],data['收入_Jay'], alpha=0.6,width = width_val, facecolor = 'deeppink', edgecolor = 'deeppink', lw=1, label='Jay income')
plt.bar(data['時間']+width_val,data['收入_JJ'], alpha=0.6,width = width_val, facecolor = 'darkblue', edgecolor = 'darkblue', lw=1, label='JJ income')
plt.legend(loc=2)#圖例展示位置,數字代表第幾象限
plt.show()#顯示圖像
顯示直方圖上的數值
import pandas as pd
import matplotlib.pyplot as plt
#讀取資料
datafile = u'D:\\pythondata\\learn\\matplotlib.xlsx'
data = pd.read_excel(datafile)
plt.figure(figsize=(10,5))#設定畫布的尺寸
plt.title('Examples of Histogram',fontsize=20)#标題,并設定字号大小
plt.xlabel(u'x-year',fontsize=14)#設定x軸,并設定字号大小
plt.ylabel(u'y-income',fontsize=14)#設定y軸,并設定字号大小
width_val = 0.4 #若顯示 n 個柱狀圖,則width_val的值需小于1/n ,否則柱形圖會有重合
#alpha:透明度;width:柱子的寬度;facecolor:柱子填充色;edgecolor:柱子輪廓色;lw:柱子輪廓的寬度;label:圖例;
rects_Jay = plt.bar(data['時間'],data['收入_Jay'], alpha=0.6,width = width_val, facecolor = 'deeppink', label='Jay income')
rects_JJ = plt.bar(data['時間']+width_val,data['收入_JJ'], alpha=0.6,width = width_val, facecolor = 'darkblue',label='JJ income')
# 添加資料标簽 就是矩形上面的數值
def add_labels(rects):
for rect in rects:
height = rect.get_height()
plt.text(rect.get_x() + rect.get_width()/2, height, height, ha='center', va='bottom')
rect.set_edgecolor('white')
add_labels(rects_Jay)
add_labels(rects_JJ)
plt.legend(loc=2)#圖例展示位置,數字代表第幾象限
plt.show()#顯示圖像
多個直方圖堆疊顯示
通過bar() 中的 bottom 參數來調節:
import pandas as pd
import matplotlib.pyplot as plt
#讀取資料
datafile = u'D:\\pythondata\\learn\\matplotlib.xlsx'
data = pd.read_excel(datafile)
plt.figure(figsize=(10,5))#設定畫布的尺寸
plt.title('Examples of Histogram',fontsize=20)#标題,并設定字号大小
plt.xlabel(u'x-year',fontsize=14)#設定x軸,并設定字号大小
plt.ylabel(u'y-income',fontsize=14)#設定y軸,并設定字号大小
#通過bottom使得兩個柱狀圖堆疊顯示,且沒有交叉
#alpha:透明度;width:柱子的寬度;facecolor:柱子填充色;edgecolor:柱子輪廓色;lw:柱子輪廓的寬度;label:圖例;
plt.bar(data['時間'],data['收入_Jay'], alpha=0.6,width = width_val, facecolor = 'deeppink', edgecolor = 'deeppink', lw=1, label='Jay income')
plt.bar(data['時間'],data['收入_JJ'], bottom=data['收入_Jay'], alpha=0.6,width = width_val, facecolor = 'darkblue', edgecolor = 'darkblue', lw=1, label='JJ income')
plt.legend(loc=2)#圖例展示位置,數字代表第幾象限
plt.show()#顯示圖像
水準直方圖
通過 barh() 函數實作,與 bar() 函數的主要差別是:在 bar() 函數中,width 這一參數代表的是柱子的寬度(胖瘦),而在 barh() 函數中 width 這一參數代表的是橫向柱子的長度(長短),在下面代碼中,width = data['收入_Jay']。
Matplotlib 中繪制水準柱狀圖(直方圖、條形圖)的函數為 barh() ,使用文法如下:
matplotlib.pyplot.
barh
(y, width, height=0.8, left=None, *, align='center', **kwargs)
參數請參考文檔:https://matplotlib.org/api/_as_gen/matplotlib.pyplot.barh.html?highlight=barh#matplotlib.pyplot.barh
import pandas as pd
import matplotlib.pyplot as plt
#讀取資料
datafile = u'D:\\pythondata\\learn\\matplotlib.xlsx'
data = pd.read_excel(datafile)
plt.figure(figsize=(10,5))#設定畫布的尺寸
plt.title('Examples of Histogram',fontsize=20)#标題,并設定字号大小
plt.xlabel(u'x-year',fontsize=14)#設定x軸,并設定字号大小
plt.ylabel(u'y-income',fontsize=14)#設定y軸,并設定字号大小
#alpha:透明度;facecolor:柱子填充色;edgecolor:柱子輪廓色;lw:柱子輪廓的寬度;label:圖例;
plt.barh(data['時間'],data['收入_Jay'], alpha=0.6, facecolor = 'deeppink', edgecolor = 'deeppink', label='Jay income')
plt.legend(loc=4)#圖例展示位置,數字代表第幾象限
plt.show()#顯示圖像
如果還有直方圖的其他花樣,歡迎留言,我們一起探讨。