Matplotlib的概念這裡就不多介紹了
小編之前也和大家分享過python使用matplotlib實現的折線圖和制餅圖效果,感興趣的朋友們也可以點擊查看,下面來看看python使用matplotlib繪製柱狀圖的方法吧,具體如下:
1. 基本的柱狀圖
import matplotlib.pyplot as pltdata = [5, 20, 15, 25, 10]plt.bar(range(len(data)), data)plt.show()
plt.bar函數簽名為:
bar(left, height, width=0.8, bottom=None, **kwargs)
事實上,left,height,width,bottom這四個參數確定了柱體的位置和大小。預設情況下,left為柱體的置中位置(可以通過align參數來改變left值的含義),即:
(left - width / 2, bottom)
為左下角位置
(left + width / 2, bottom + height)
為右上方位置
例如:
import matplotlib.pyplot as pltdata = [5, 20, 15, 25, 10]plt.bar([0.3, 1.7, 4, 6, 7], data, width=0.6, bottom=[10, 0, 5, 0, 5])plt.show()
2. 設定柱體樣式
(1)顏色
通過facecolor(或fc)關鍵字參數可以設定柱體顏色,例如:
import matplotlib.pyplot as pltdata = [5, 20, 15, 25, 10]plt.bar(range(len(data)), data, fc='g')plt.show()
通過color關鍵字參數 可以一次性設定多個顏色,例如:
import matplotlib.pyplot as pltdata = [5, 20, 15, 25, 10]plt.bar(range(len(data)), data, color='rgb') # or `color=['r', 'g', 'b']`plt.show()
(2)描邊
相關的關鍵字參數為:
edgecolor 或 ec
linestyle 或 ls
linewidth 或 lw
例如:
import matplotlib.pyplot as pltdata = [5, 20, 15, 25, 10]plt.bar(range(len(data)), data, ec='r', ls='--', lw=2)plt.show()
(3)填充
hatch關鍵字可用來設定填充樣式,可取值為:/, \, |, -, +, x, o, O, ., *。例如:
import matplotlib.pyplot as pltdata = [5, 20, 15, 25, 10]plt.bar(range(len(data)), data, ec='k', lw=1, hatch='o')plt.show()
3. 設定tick label
import matplotlib.pyplot as pltdata = [5, 20, 15, 25, 10]labels = ['Tom', 'Dick', 'Harry', 'Slim', 'Jim']plt.bar(range(len(data)), data, tick_label=labels)plt.show()
4. 堆疊柱狀圖
通過bottom參數,可以繪製堆疊柱狀圖。例如:
import numpy as npimport matplotlib.pyplot as pltsize = 5x = np.arange(size)a = np.random.random(size)b = np.random.random(size)plt.bar(x, a, label='a')plt.bar(x, b, bottom=a, label='b')plt.legend()plt.show()
5. 並列柱狀圖
繪製並列柱狀圖與堆疊柱狀圖類似,都是繪製多組柱體,只需要控制好每組柱體的位置和大小即可。例如:
import numpy as npimport matplotlib.pyplot as pltsize = 5x = np.arange(size)a = np.random.random(size)b = np.random.random(size)c = np.random.random(size)total_width, n = 0.8, 3width = total_width / nx = x - (total_width - width) / 2plt.bar(x, a, width=width, label='a')plt.bar(x + width, b, width=width, label='b')plt.bar(x + 2 * width, c, width=width, label='c')plt.legend()plt.show()
6. 橫條圖
使用barh方法繪製橫條圖。例如:
import matplotlib.pyplot as pltdata = [5, 20, 15, 25, 10]plt.barh(range(len(data)), data)plt.show()
plt.barh方法的簽名為:
barh(bottom, width, height=0.8, left=None, **kwargs)
可以看到與plt.bar方法類似。因此堆疊橫條圖和並列橫條圖的畫法與前面類似,不做贅述。
7. 正負橫條圖
import numpy as npimport matplotlib.pyplot as plta = np.array([5, 20, 15, 25, 10])b = np.array([10, 15, 20, 15, 5])plt.barh(range(len(a)), a)plt.barh(range(len(b)), -b)plt.show()