介紹
matplotlib 是python最著名的繪圖庫(kù),它提供了一整套和matlab相似的命令A(yù)PI,十分適合交互式地進(jìn)行制圖。而且也可以方便地將它作為繪圖控件,嵌入GUI應(yīng)用程序中。
它的文檔相當(dāng)完備,并且 Gallery頁(yè)面 中有上百幅縮略圖,打開(kāi)之后都有源程序。因此如果你需要繪制某種類(lèi)型的圖,只需要在這個(gè)頁(yè)面中瀏覽/復(fù)制/粘貼一下,基本上都能搞定
配置屬性
matplotlib所繪制的圖中的每個(gè)組成部分都對(duì)應(yīng)有一個(gè)對(duì)象,我們可以通過(guò)調(diào)用這些對(duì)象的屬性設(shè)置方法set_*或者pyplot的屬性設(shè)置函數(shù)setp設(shè)置其屬性值。
- set_或plt.setp*
>>> import numpy as np
>>> import matplotlib.pyplot as plt
>>> x = np.arange(0, 5, 0.1)
>>> line, = plt.plot(x, x*x)
# plot返回一個(gè)列表,通過(guò)line,獲取其第一個(gè)元素
# 調(diào)用Line2D對(duì)象的set_*方法設(shè)置屬性值
>>> line.set_antialiased(False)
# 關(guān)閉對(duì)象的反鋸齒效果
# 同時(shí)繪制sin和cos兩條曲線,lines是一個(gè)有兩個(gè)Line2D對(duì)象的列表
>>> lines = plt.plot(x, np.sin(x), x, np.cos(x))
# 調(diào)用setp函數(shù)同時(shí)配置多個(gè)Line2D對(duì)象的多個(gè)屬性值
>>> plt.setp(lines, color="r", linewidth=2.0)
# 配置多個(gè)Line2D對(duì)象的顏色和線寬屬性
- get_ plt.getp獲取對(duì)象的屬性值*
>>> line.get_linewidth()
1.0
>>> plt.getp(lines[0], "color") # 返回color屬性
'r'
>>> plt.getp(lines[1]) # 輸出全部屬性
alpha = 1.0
animated = False
antialiased or aa = True
axes = Axes(0.125,0.1;0.775x0.8)
... ...
注:getp函數(shù)只能對(duì)一個(gè)對(duì)象進(jìn)行操作,有兩種操作:
* 指定屬性名:返回對(duì)象的指定屬性的值
* 不指定屬性名:打印出對(duì)象的所有屬性和其值
- matplotlib 圖表正常顯示中文
import matplotlib as mpl
mpl.rcParams['font.sans-serif'] = ['SimHei']
# 正常顯示中文標(biāo)簽設(shè)置
mpl.rcParams['axes.unicode_minus'] = False
# 正常顯示負(fù)號(hào)設(shè)置
為項(xiàng)目設(shè)置maplotlib參數(shù)
-
在代碼中有兩種方式更改參數(shù)
- 使用參數(shù)字典(rcParams)
- 調(diào)用matplotlib.rc()命令,通過(guò)傳入關(guān)鍵字元組,修改參數(shù)
若不想每次都進(jìn)行設(shè)置,可以使用如下命令來(lái)找到當(dāng)前用戶(hù)的配置文件目錄,直接修改配置文件。
import matplotlib
matplotlib.get_data_path()
- 配置文件包含以下配置項(xiàng):
axex:設(shè)置坐標(biāo)軸邊界和表面的顏色,坐標(biāo)刻度值大小和網(wǎng)格顯示
backend:設(shè)置目標(biāo)TkAgg和GTKAgg
figure:控制dpi、邊界顏色、圖形大小、和子區(qū)(subplot)設(shè)置
font:字體集(font family)、字體大小和樣式設(shè)置
grid:設(shè)置網(wǎng)格顏色和線性
legend:設(shè)置圖例和其中的文本的顯示
line:設(shè)置線條(顏色、線型、寬度等)和標(biāo)記
patch:是填充2D空間的圖形形象,如多邊形和圓、控制線和寬、顏色和抗鋸齒設(shè)置等
savefig:可以對(duì)保存圖形進(jìn)行單獨(dú)設(shè)置,例如設(shè)置渲染的文件背景為白色
verbose:設(shè)置matplotlib在執(zhí)行期間信息輸出,如slient、helpful、debug和debug-annoying
xticks和yticks:為x,y軸的朱刻度和次刻度設(shè)置顏色、大小、方向,以及標(biāo)簽大小
線條相關(guān)屬性標(biāo)記設(shè)置
- 該表線條的屬性
| 線條風(fēng)格linestyle或ls | 描述 | 線條風(fēng)格linestyle或類(lèi)似 | 描述 |
|---|---|---|---|
| '_' | 實(shí)線 | ':' | 虛線 |
| '__' | 破折線 | 'None',' ''' | 什么都不畫(huà) |
| '_.' | 點(diǎn)劃線 |
- 線條標(biāo)記
| 標(biāo)記maker | 描述 | 標(biāo)記maker | 描述 |
|---|---|---|---|
| 'O' | 圓圈 | '.' | 點(diǎn) |
| 'D' | 菱形 | 's' | 正方形 |
| 'h' | 六邊形1 | '*' | 星號(hào) |
| 'H' | 六邊形2 | 'd' | 小菱形 |
| '_' | 水平線 | 'v' | 一角朝下的三角形 |
| '8' | 八邊形 | '<' | 一角朝左的三角形 |
| 'p' | 五邊形 | '>' | 一角超右的三角形 |
| ',' | 像素 | '^' | 一角朝上的三角形 |
| '+' | 加號(hào) | '' | 豎線 |
| 'None','',' ' | 無(wú) | 'x' | X |
- 顏色
可以調(diào)用
matplotlib.pyplot.colors()得到matplotlib支持的所有顏色
| 別名 | 顏色 | 別名 | 顏色 |
|---|---|---|---|
| g | 藍(lán)色 | g | 綠色 |
| r | 紅色 | y | 黃色 |
| c | 青色 | k | 黑色 |
| m | 洋紅色 | w | 白色 |
若顏色不夠用,可以通過(guò)其他兩種方式來(lái)定義顏色值:
* 使用HTML十六進(jìn)制字符串`color = 'eeeff'`
* 也可以傳入一個(gè)歸一化到[0,1]的元組`color = (0.3,0.3,0.4)`
- 背景色
通過(guò)向matplotlib.pyplot.axes()或者matplotlib.pyplot.subplot()這樣的方法提供一個(gè)axisbg參數(shù),可以指定坐標(biāo)這的背景色 subplot(111,axisbg=(0.1843,0.3098,0.3098)
** matplotlib教程之pyplot模塊**
** matplotlib教程之實(shí)例**