matplotlib繪圖——柱狀圖
1. 基本的柱狀圖
import matplotlib.pyplot as pltdata = [5, 20, 15, 25, 10]plt.bar(range(len(data)), data)plt.show()
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()
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()
相關的關鍵字參數為:
- 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()
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()
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 |