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()


推薦閱讀:

左手用R右手Python系列5——數據切片與索引
Python 的 type 和 object 之間是怎麼一種關係?
python命令行解析工具
流暢的Python --- 導言
所有人都說Python 簡單易學,為何我覺得難?

TAG:Python | 数据可视化 | Matplotlib |