matplotlib 使用簡明教程(二)-常用圖表
- 點線圖
- `plt.plot(x1, y1, '樣式1', x2, y2, '樣式2', x3, y3, '樣式3', ...)`
- `plt.loglog(*args, **kwargs)`
- `plt.semilogx(*args, **kwargs)` 和 `plt.semilogy(*args, **kwargs)`
- `plt.step(x, y, *args, data=None, **kwargs)`
- `plt.plot_date(z, y, tz, xdate, ydate)`
- `plt.errorbar(x, y, yerr=None, xerr=None, lolims=False, uplims=False, xlolims=False, xuplims=False, **kwargs)`
- 柱狀圖、填充圖
- `plt.bar(x, height, width=0.8, bottom=0, *args, **kwargs)`
- `plt.barh(*args, **kwargs)`
- `plt.fill_between(x, y1, y2=0, where=None, interpolate=False, step=None, hold=None, data=None, **kwargs)`
- `plt.fill_betweenx(y, x1, x2=0, where=None, step=None, interpolate=False, hold=None, data=None, **kwargs)`
- `stackplot(x, *args, **kwargs)`
- `plt.fill(*args, **kwargs)`
- 散點圖、分佈圖
- `plt.scatter(x, y, s=None, c=None, cmap=None, norm=None, vmin=None, vmax=None, alpha=None, linewidths=None, verts=None, edgecolors=None, *, data=None, **kwargs)`
- `stem([x,] y, linefmt=None, markerfmt=None)`
- `plt.eventplot(positions, orientation='horizontal', lineoffsets=1, linelengths=1, linewidths=None, colors=None, linestyles='solid', hold=None, data=None, **kwargs)`
- `plt.broken_barh(xranges, yrange, hold=None, data=None, **kwargs)`
- 比例圖
Matplotlib 中最重要的一個模塊應該就是 matplotlib.pyplot
了,裏邊包括了幾乎所有普通用戶需要調用的功能。
另外 numpy
作爲一個多維數組/矩陣的模塊,也經常和 Matplotlib 一起被使用
matplotlib 官方建議在引用這兩個庫的時候,使用如下語法:
import matplotlib.pyplot as plt
import numpy as np
點線圖
plt.plot(x1, y1, '樣式1', x2, y2, '樣式2', x3, y3, '樣式3', ...)
用於繪製折線圖。
其中 xn、yn 爲第 n 條曲線的 x、y 的值(n = 1, 2, 3, …)
樣式n 爲每個曲線的樣式,本篇暫不做介紹。
返回值是一個數組,其中每個元素都是繪製的曲線。
plt.loglog(*args, **kwargs)
用於繪製折線圖,與 plot 的區別在於 x 軸和 y 軸都是指數型的。
重要參數:
basex, basey: x、y 軸的底,需要大於 1
plt.semilogx(*args, **kwargs)
和 plt.semilogy(*args, **kwargs)
用於繪製折線圖,兩個函數的 x 軸、y 軸分別是指數型的。
支持 plot 函數的所有參數,分別有一個重要參數:
- basex: x 軸的底,需要大於 1
- basey: y 軸的底,需要大於 1
plt.step(x, y, *args, data=None, **kwargs)
類似 plot 函數,但是曲線是階梯狀的。
重要參數:
where: pre、post 或 mid,即數據點處於階梯的右側、左側還是正中
plt.plot_date(z, y, tz, xdate, ydate)
與 plot 類似,可以把總座標/橫座標當做 matplotlib.dates 類型數據來處理
- x, y: x、y 座標對
- xdate, ydate: 是否將 x、y 軸作爲 matplotlib.dates 類型來處理,默認 xdate 爲 True,ydate 爲 False
plt.errorbar(x, y, yerr=None, xerr=None, lolims=False, uplims=False, xlolims=False, xuplims=False, **kwargs)
用於繪製帶有 誤差線的折線圖。
重要參數:
- yerr, xerr: 誤差程度。
- 如果是一個數字,則所有數據點的誤差是一個統一的數字;
- 如果是一個一維的數組(N),則數組表明了每個數據點正向、負向的誤差程度
- 如果是一個二維的數組(2, N),則數組表明了每個數據點,正向以及負向各自的誤差程度
- lolims, uplims, xlolims, xuplims: 誤差方向,是否只有正向或負向的誤差,布爾型
可以是一維數組,或一個單獨的參數
柱狀圖、填充圖
plt.bar(x, height, width=0.8, bottom=0, *args, **kwargs)
柱狀圖,重要參數:
- x:數據集的名稱
- height:數據集中各個數據的高度
- width:柱體的寬度
- bottom:柱體底部的位置
height 一次爲一個一維的數組。
如果柱狀圖希望疊加(如下圖),可以多次調用 bar 函數。
plt.barh(*args, **kwargs)
與 plt.bar()
函數類似,不過是水平方向的。
重要參數:
- y:數據集的名稱
- width:數據集中各個數據的高度
- height:柱體的寬度
- left:柱體底部的位置
plt.fill_between(x, y1, y2=0, where=None, interpolate=False, step=None, hold=None, data=None, **kwargs)
y1 和 y2 之間進行填充。
重要參數:
- x:橫座標的數組
- y1、y2:需要填充的 y 座標的數組
- where:一個 bool 類型的數組,確定 x 數組哪些位置需要填充
- step:是否要採用柱狀填充(默認採取曲線填充),可以爲 ‘pre’、‘post’、‘mid’
plt.fill_betweenx(y, x1, x2=0, where=None, step=None, interpolate=False, hold=None, data=None, **kwargs)
與 plt.fill_betwwen()
函數類似,但是是進行水平方向,即 x1 和 x2 之間填充。
重要參數:
- y:縱座標的數組
- x1、x2:需要填充的 x 座標的數組
- where:一個 bool 類型的數組,確定 y 數組哪些位置需要填充
- step:是否要採用柱狀填充(默認採取曲線填充),可以爲 ‘pre’、‘post’、‘mid’
stackplot(x, *args, **kwargs)
繪製多層圖,或稱堆疊式圖區。
重要參數:
- x:橫座標數組
- y 或 y1, y2, y3, …:縱座標數據的數組,可以用 y 作爲多維數組,也可以用 y1, y2, y3, … 這樣多個數組
- baseline:確定圖表底線的方式。
- zero:固定 0 作爲底線
- sym:堆棧對稱的位置作爲底線
- wiggle:我也不是很明白,似乎是希望讓各個邊界的曲線儘量平緩
- weighted_wiggle:同樣不是很明白,看起來是上邊緣固定爲 0
plt.fill(*args, **kwargs)
填充一個個的多邊形,調用方式如下:
ax.fill(x, y[, 樣式描述字符串]) # x 和 y 分別是某一個多邊形的橫、縱座標數組
ax.fill(x1, y2[, 樣式描述字符串], x2, y2[, 樣式描述字符串], x3, y3[, 樣式描述字符串])
# 每對 xn、yn描述了一個多邊形
散點圖、分佈圖
plt.scatter(x, y, s=None, c=None, cmap=None, norm=None, vmin=None, vmax=None, alpha=None, linewidths=None, verts=None, edgecolors=None, *, data=None, **kwargs)
二維的散點圖,重要參數:
- x, y: x、y 座標序列
- s: 每個點的大小
- c: 顏色
- alpha: 透明度
stem([x,] y, linefmt=None, markerfmt=None)
散點的杆圖
重要參數:
- x(可選):橫座標的數組
- y:縱座標的數組
- linefmt:連線格式
- markderfmt:標記點格式
plt.eventplot(positions, orientation='horizontal', lineoffsets=1, linelengths=1, linewidths=None, colors=None, linestyles='solid', hold=None, data=None, **kwargs)
類似蛋白質電泳圖,每個數據點將被繪製成一根數據線。
重要參數:
- orientation:分佈的方向,‘horizontal’ 或 ‘vertical’。默認方向爲水平,即上圖方向
- positions:一維或二維數組,每一行都是一組數據。每組數據中各個成員是數據線的位置(無序的),例如上圖,從上到下共 6 組數據,分別規定了數據線的水平位置
- lineleghths:每條數據線的長度,例如上圖,數據線的高度
- lineoffsets:每組數據的偏移位置,例如上圖中 6 組數據的垂直位置
plt.broken_barh(xranges, yrange, hold=None, data=None, **kwargs)
效果上和泳道圖有類似之處。
重要參數:
- xranges:(xmin, xwidth) 組成的數組,其中 xmin 是每個塊左端的 x 座標,xwidth 是每個塊的寬度
- yranges:(ymin, ymax)規定某一組方塊的 y 座標位置
比例圖
plt.pie(x, explode=None, labels=None, colors=None, autopct=None, pctdistance=0.6, shadow=False, labeldistance=1.1, startangle=None, radius=None, counterclock=True, wedgeprops=None, textprops=None, center=(0, 0), frame=False, rotatelabels=False, hold=None, data=None)
繪製餅圖。
重要參數:
- x:餅大小的數據
- explode:各個餅距離中心的距離,1 表示距離圓心一個半徑的距離
- labels:各個餅的文字標籤
- labeldistance:文字標籤距離圓心的距離,1 表示距離圓心一個半徑的距離
- autopct:定義百分比數據的格式,例如 ‘%.0f%%’ 表示不保留小數點,並且需要加上百分號
- pctdistance:百分比數據距離圓心的距離,1 表示距離圓心一個半徑的距離
- startangle:開始角度,0-360 度
- radius:整個餅圖的角度,默認 1
系列文章:
matplotlib 使用簡明教程(一)-基礎概念:
https://blog.csdn.net/fenghuizhidao/article/details/79352882
matplotlib 使用簡明教程(二)-常用圖表
https://blog.csdn.net/fenghuizhidao/article/details/83090043
matplotlib 使用簡明教程(三)-一些專業圖表簡介
https://blog.csdn.net/fenghuizhidao/article/details/83090165
matplotlib 使用簡明教程(四)-輔助性元件
https://blog.csdn.net/fenghuizhidao/article/details/83090249
matplotlib 使用簡明教程(五)-畫布、圖表、元素基礎操作
https://blog.csdn.net/fenghuizhidao/article/details/83090320
matplotlib 使用簡明教程(六)-圖像、動畫相關
https://blog.csdn.net/fenghuizhidao/article/details/83090512
matplotlib 使用簡明教程(七)-樣式定義
https://blog.csdn.net/fenghuizhidao/article/details/83090553