python使用matplotlib繪製柱狀圖教程

來源:互聯網
上載者:User
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()

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.