介紹
功能簡介
基礎功能
使用簡介
- 基礎概念
legend,marker; figure,axes,axis ; spines
Artist( text, line2D , collection , patch ... ) - 數據類型
array - 命名空間
matplotlib.pyplot
可與numpy
使用 (pylab已經棄用) - 生成多個圖
plt.subplots
(row,col) 可生成多個axes - 交互模式
plt.draw()
如果不需要在屏幕顯示,調用該函數 - 便捷功能
線段的簡化:
通過path.simplify
andpath.simplify_threshold
Marker的簡化:
通過markevery
plt.plot(x, y, markevery=10)
詳情參看Markevery Demo
線分塊:
mpl.rcParams['agg.path.chunksize'] = 0
使用快速格式:
為了避免其他格式被改變,可以在最后部分調用,不會改變其他設置
import matplotlib.style as mplstyle
mplstyle.use('fast')
Pyplot示例
- 折線圖、散點圖、柱狀圖
- 散點圖的圖示、圖的顏色
- 繪制多個圖
- 插入文本
- 插入數學公式
- 插入注釋文本
- 坐標軸會自動適應不同數據:線性、指數等
圖的種類
- 線
plot()
- 多個子圖
subplot()
- 顯示圖片
imshow()
- 輪廓線與偽彩色
pcolormesh()
,contour()
- 直方圖
hist()
- 路徑
matplotlib.path
- 3D
3D plotting
- 流量圖
streamplot()
- 橢圓 為了某些具體任務..
- 條形圖
bar()
- 餅圖
pie()
- 表格
table()
- 散點圖
scatter()
- 填充曲線
fill()
- 時序數據
matplotlib.ticker
與matplotlib.dates
- 指數
semilogx()
,semilogy()
與loglog()
- 極坐標圖
polar()
- 圖示
legend()
- tex文本
matplotlib.mathtext
;usetex
圖片示例
- 導入圖片模塊
import matplotlib.image as mpimg
; 可以使用Pillow library
,Matplotlib
只支持PNG - 讀取圖片
img = mpimg.imread('../../doc/_static/stinkbug.png')
- 顯示圖片
imgplot = plt.imshow(img)
- 色條
plt.colorbar()
- 不同的圖片模式 (設置顯示范圍等)
一個完整的plot的例子
- 數據
- 加載數據
- 控制格式
plt.style.use('fivethirtyeight')
plt.rcParams.update({'figure.autolayout': True})
tips: Customizing Matplotlib with style sheets and rcParams - 變更plt屬性,一次改變多個
pyplot.setp()
- 調整圖的尺寸
fig, ax = plt.subplots(figsize=(8, 4))
- 坐標軸格式控制
ax.xaxis.set_major_formatter(formatter)
ticker.FuncFormatter
- 保存圖片
figure.Figure.savefig()
使用style sheets與 rcParams控制格式
style sheets
- 可選用的格式
plt.style.available
- 定義自己的格式
mpl_configdir/stylelib/presentation.mplstyle
- 格式組合
plt.style.use(['dark_background', 'presentation'])
- 臨時格式
with plt.style.context('dark_background'):
rcParams
- 直接使用
matplotlib.rcParams
修改格式,如mpl.rcParams['lines.linewidth'] = 2
- 使用
matplotlib.rc()
修改格式,如mpl.rc('lines', linewidth=4, color='g')
- 使用
matplotlib.rcdefaults()
恢復默認配置 - 默認配置都在
matplotlibrc
文件中
中級功能
Artist 教程
三層結構:
- 畫圖區域
matplotlib.backend_bases.FigureCanvas
- 畫圖方法
matplotlib.backend_bases.Renderer
- 使用
renderer
在canvas
上繪圖matplotlib.artist.Artist
Artist 分為兩類:
- primitives 包括:
Line2D
,Rectangle
,Text
,AxesImage
, etc - containers 包括:
Axis
,Axes
andFigure
Axes 通常按行列分布,使用 add_axes()
在任意位置創建axes
legend 教程
legend entry
: 每個legend由一個或多個legend entry
構成
legend key
: 左邊標記的顏色或模式
legend label
: 描述handle的文本
legend handle
: 描述的handle
cycler教程
處理周期數據 ps.
改變Figure布局
subplots()
: 創建並布局axes
GridSpec
: 重置figure布局
SubplotSpec
: 給定布局,創建子圖
subplot2grid()
: 在grid內部創建子圖
布局教程
constrained_layout = ture
會避免坐標、文字重疊現象- colorbars,Suptitle,Legends 布局的影響
- 手動布局
- 另一種選擇
tight_layout()
控制圖片方向
通過 origin
與 extent kwargs
參數 控制圖片的axes
高級功能
路徑
繪制路徑 path
路徑效果
設置路徑藝術字效果
轉換坐標系
偏移?
顏色
指定顏色
設置顏色方法
- RGB or RGBA 通過0-1的浮點數
(0.1, 0.2, 0.5) or (0.1, 0.2, 0.5, 0.3)
- RGB or RGBA 字符串
#0f0f0f
or#0f0f0f80
- 一個0-1浮點數,表示灰度
0.5
- 顏色縮寫
{'b', 'g', 'r', 'c', 'm', 'y', 'k', 'w'}
- X11/CSS4 顏色名
black
- xkcd 顏色
xkcd:sky blue
- 大寫C與數字
C0
根據style進行變化,數字最大也不知道是多少...(seaborn 有六種顏色axes.prop_cycle: cycler('color', ['4C72B0', '55A868', 'C44E52', '8172B2', 'CCB974', '64B5CD'])
)
定制Colorbars
- 基本連續的colorbar
- 離散間隔的colorbar
- 設定長度的colorbar
定制colormap
獲取改變colormap的值;設置多個colormap
colormap 分布
通常是線性分布,在某些情況下需要調整
選擇colormap
選擇colormap的色彩模式
文本
Matplotlib Plots 中的文本
基本命令
- text axes上任意位置添加文本
- annotate axes上任意位置添加注釋,有一個可選的箭頭
- xlabel axes的x軸標簽
- ylabel axes的y軸標簽
- title axes標題
- figtext figure上任意位置添加文本
- suptitle figure添加標題
x-軸與y-軸文本的格式
- 分布位置
- 字體格式 text的參數
- 間隔 pad
標題
- 分布位置
- 間隔 pad
刻度與刻度標簽
- 主刻度、副刻度
- 刻度顯示的范圍
- 刻度顯示的格式
文本的屬性與布局
- alpha 透明度
- color 顏色
- position 位置
- rotation 旋轉
坐標轉換?
非拉丁字符?
注釋
- 文本的樣式
- 箭頭的格式(可以是圓、方框、各種箭頭等)
ps. 注釋數據的高亮是由marker實現的
數學表達式
- plot支持latex的數學表達式
ps. 使用mathtype進行編輯,導出就可以了
使用latex渲染文本
沒有必要..
實際使用
使用figure.Figure.savefig()
保存成PDF