#### plot 函數(shù)
##### 1. 函數(shù)功能
通常用于繪制線圖。
##### 2.參數(shù)說明:
> plot([x], y, [fmt], data=None, **kwargs) # 單條線:
>
> plot([x], y, [fmt], [x2], y2, [fmt2], ..., **kwargs) # 多條線一起畫
- x:x軸上的數(shù)字
- y:y軸上的數(shù)字
- 可選參數(shù)[fmt] 是一個字符串來定義圖的基本屬性如:顏色(color),點型(marker),線型(linestyle),
具體形式 fmt = '[color][marker][line]'
- ls:linestyle 即折線的風(fēng)格
- lw: linewidth 即折線線條的寬度
- color:線條的顏色
如果要使用顏色,常用的顏色簡寫(更多的顏色使用可以參照上篇文章):
| 簡寫 | 顏色 |
| :--: | :-----------: |
| 'b' | 藍(lán)色(blue) |
| 'g' | 綠色(green) |
| 'r' | 紅色(red) |
| 'c' | 青色(cyan) |
| 'm' | 洋紅(magenta) |
| 'y' | 黃色(yellow) |
| 'k' | 黑色(black) |
| 'w' | 白色(white) |
- label:標(biāo)記圖形內(nèi)容的標(biāo)簽文本
- marker: 就是數(shù)據(jù)點的形狀,比如原點,三角形,加號等等
##### 3. 實例代碼
```python
import matplotlib.pyplot as plt
import numpy as np
plt.rcParams['font.sans-serif'] = ['Simhei']
# 中文情況下 負(fù)號顯示會有異常 所以還需要設(shè)置負(fù)號的操作
plt.rcParams['axes.unicode_minus'] = False
x = np.linspace(0.01, 12, 100) # 生成100個從0.01到12的均勻數(shù)值
y = np.cos(x) # 余弦函數(shù)
plt.plot(x,y,ls='-',color='r',lw=2,label='plot繪圖') # 設(shè)置繪圖屬性
plt.legend() # 設(shè)置顯示圖例
plt.show() # 顯示圖像
```
##### 4. 效果
### scatter()函數(shù)
##### 1. 函數(shù)功能
尋找變量之間的關(guān)系,用于繪制散點圖。
##### 2.參數(shù)說明:
> ```python
> scatter(x, y, s=None, c=None, marker=None, cmap=None, norm=None, vmin=None, vmax=None, alpha=None, linewidths=None, verts=None, edgecolors=None, hold=None, data=None, **kwargs)
> ```
- x,y:array_like,shape(n,)
輸入數(shù)據(jù)
- s:標(biāo)量或array_like,shape(n,),可選
大小以點數(shù)^ 2。默認(rèn)是`rcParams ['lines.markersize'] ** 2`。
- c:顏色,順序或顏色順序,可選,默認(rèn):'b'
- marker:`?matplotlib.markers.MarkerStyle`,可選,默認(rèn)值:'o'
- cmap:`?matplotlib.colors.Colormap`,可選,默認(rèn):無
一個`?matplotlib.colors.Colormap`實例或注冊名稱, `cmap`僅在`c`是浮點數(shù)組時使用。如果沒有, 默認(rèn)為rc`image.cmap`。
- norm:`?matplotlib.colors.Normalize`,可選,默認(rèn):無
`?matplotlib.colors.Normalize`實例用于縮放亮度數(shù)據(jù)為0,1。`norm`只有在`c`是一個數(shù)組時才被使用。如果`None',則使用默認(rèn)值:func:`normalize`。
- edgecolors :顏色或顏色順序,可選,默認(rèn)值:無
如果無,則默認(rèn)為'face', 如果'face',邊緣顏色將永遠(yuǎn)是相同的臉色。如果它是'none',補丁邊界不會被畫下來。
##### 3.實例代碼
```python
import matplotlib.pyplot as plt
import numpy as np
plt.rcParams['font.sans-serif'] = ['Simhei']
# 中文情況下 負(fù)號顯示會有異常 所以還需要設(shè)置負(fù)號的操作
plt.rcParams['axes.unicode_minus'] = False
x = np.linspace(1, 20, 200)
y = np.random.randn(200)
plt.scatter(x,y,s=10,c='g',label='散點圖繪制') # x,y的數(shù)據(jù)規(guī)模必須要相同
plt.legend()
plt.show()
```
##### 4.效果
### xlim()和 ylim()函數(shù)
##### 1. 函數(shù)功能
在Python的matplotlib.pyplot中方法xlim和ylim的使用方法相同,分別用來設(shè)置x軸和y軸的顯示范圍。
##### 2.參數(shù)說明:
對x軸操作`plt.xlim(xmin,xmax)`,同理對y軸操作`plt.ylim(ymin,ymax)`
- xmin|ymin:x軸上的刻度最小值或者是 y 軸上的刻度最小值
- xmax|ymax:x軸上的刻度最大值或者是 y 軸上的刻度最大值
##### 3.實例代碼
```python
import matplotlib.pyplot as plt
import numpy as np
plt.rcParams['font.sans-serif'] = ['Simhei']
# 中文情況下 負(fù)號顯示會有異常 所以還需要設(shè)置負(fù)號的操作
plt.rcParams['axes.unicode_minus'] = False
x = np.linspace(1, 20, 100)
y = np.cos(x) # 余弦函數(shù)
plt.plot(x,y,ls='-',color='r',lw=2,label='plot繪圖') # 設(shè)置繪圖屬性
plt.legend() # 顯示圖例
# 設(shè)置x 和 y 軸的刻度
plt.xlim(5,15)
plt.ylim(0,1)
plt.show()
```
##### 4.效果對比
如果把x軸刻度調(diào)成與生成范圍一致(1~20),我們就會發(fā)現(xiàn)線條布滿了x軸范圍。
### xlabel()和 ylabel函數(shù)
##### 1. 函數(shù)功能
設(shè)置x軸或者y 軸的標(biāo)簽文本
##### 2.參數(shù)說明:
> matplotlib.pyplot.ylabel(s, *args, **kwargs)
>
> matplotlib.pyplot.xlabel(s, *args, **kwargs)
設(shè)置坐標(biāo)軸x軸文本標(biāo)簽`xlabel(string)`
設(shè)置y軸文本標(biāo)簽`ylabel(string)`
fontsize:數(shù)字或’small’,‘large’,‘medium’
verticalalignment:表示上下平移向figure與axis之間的中間線對齊,字母底端為‘top’‘top’, ‘bottom’, ‘center’,‘baseline’.
horizontalalignment:意思為左右平移向中間對齊.如’left’,若為xlabel則標(biāo)識最左邊對齊figure的中垂線,若為ylabel則標(biāo)識最左邊對齊figure的中橫線.取值可以是:‘center’, ‘right’, ‘left’
rotation: 意思為旋轉(zhuǎn),取值有:‘vertical’,‘horizontal’
##### 3.實例代碼
```python
import matplotlib.pyplot as plt
import numpy as np
plt.rcParams['font.sans-serif'] = ['Simhei']
# 中文情況下 負(fù)號顯示會有異常 所以還需要設(shè)置負(fù)號的操作
plt.rcParams['axes.unicode_minus'] = False
x = np.linspace(1, 20, 100)
y = np.cos(x)
plt.plot(x,y,ls='-',color='r',lw=2,label='plot繪圖')
plt.legend() # 顯示圖例
# 設(shè)置x和y軸的標(biāo)簽
plt.xlabel('x軸標(biāo)簽') # 設(shè)置x軸文本標(biāo)簽
plt.ylabel('y軸標(biāo)簽') # 設(shè)置y軸文本標(biāo)簽
plt.show()
```
##### 4.效果
### grid()函數(shù)
##### 1. 函數(shù)功能
繪制刻度線的網(wǎng)格線
##### 2.參數(shù)說明
> grid(b=None, which=‘major’, axis=‘both’, **kwargs)
b: 表示布爾類型的參數(shù)是否顯示網(wǎng)格線,如果提供了參數(shù),則認(rèn)為需要顯示網(wǎng)格,b=True
which: {‘major’, ‘minor’, ‘both’}, optional。 The grid lines to apply the changes on.
可選參數(shù),取值為 ‘major’, ‘minor’, ‘both’,需要修改的網(wǎng)格線
axis:{‘both’, ‘x’, ‘y’}, optional The axis to apply the changes on.
可選參數(shù),需要修改的坐標(biāo)軸
**kwargs:Define the line properties of the grid, e.g.:grid(color=‘r’, linestyle=’-’, linewidth=2)
定義網(wǎng)格線的屬性,如:顏色,風(fēng)格、粗細(xì)等
##### 3.實例代碼
```
import matplotlib.pyplot as plt
import numpy as np
plt.rcParams['font.sans-serif'] = ['Simhei']
# 中文情況下 負(fù)號顯示會有異常 所以還需要設(shè)置負(fù)號的操作
plt.rcParams['axes.unicode_minus'] = False
x = np.linspace(1, 20, 200) # 從1到20均勻取200個數(shù)
y = np.random.randn(200) # 在標(biāo)準(zhǔn)正態(tài)分布中隨機取200個數(shù)
plt.scatter(x,y,s=10,c='b',label='散點圖繪制') # x,y的數(shù)據(jù)規(guī)模必須要相同
plt.legend()
# 設(shè)置網(wǎng)格線
plt.grid(axis='both',linestyle=":",color='g')
plt.show()
```
##### 4.效果
### axvspan()和函數(shù)
##### 1.函數(shù)功能
允許我們添加一個跨坐標(biāo)軸的水平帶(矩形)和跨坐標(biāo)軸的垂直帶(矩形).主要為用戶提供一定的參照.
##### 2.參數(shù)說明:
> axvspan(xmin, xmax, ymin=0, ymax=1, **kwargs)
>
> axhspan(xmin, xmax, ymin=0, ymax=1, **kwargs)
- xmin:參考區(qū)域的其實位置
- xmax:參考區(qū)域的終止位置
- facecolor:參考區(qū)域的填充顏色
- alpha:參考區(qū)域填充顏色的透明度
##### 3. 實例代碼
```python
import matplotlib.pyplot as plt
import numpy as np
plt.rcParams['font.sans-serif'] = ['Simhei']
# 中文情況下 負(fù)號顯示會有異常 所以還需要設(shè)置負(fù)號的操作
plt.rcParams['axes.unicode_minus'] = False
x = np.linspace(1, 20, 200) # 從1到20均勻取200個數(shù)
y = np.random.randn(200) # 在標(biāo)準(zhǔn)正態(tài)分布中隨機取200個數(shù)
plt.scatter(x,y,s=10,c='r',label='散點圖繪制') # x,y的數(shù)據(jù)規(guī)模必須要相同
plt.legend()
# 設(shè)置參考區(qū)域
plt.axvspan(5, 10, facecolor='b', alpha=0.2)
plt.axhspan(-1, 1, facecolor='g', alpha=0.2)
plt.show()
```
##### 4.效果
### annotate()函數(shù)
##### 1.函數(shù)功能
annotate用于在圖形上給數(shù)據(jù)添加文本注解,而且支持帶箭頭的劃線工具,方便我們在合適的位置添加描述信息。
##### 2.參數(shù)說明
> annotate(s, xy, \*args, **kwargs)*
- **s:**注釋文本的內(nèi)容
- **xy:**被注釋的坐標(biāo)點,二維元組形如(x,y)
- **xytext:**注釋文本的坐標(biāo)點,也是二維元組,默認(rèn)與xy相同
- weight:注釋的文本的粗細(xì)風(fēng)格
- color:注釋文本的顏色
- **xycoords:**被注釋點的坐標(biāo)系屬性,允許輸入的值如下
- | 屬性值 | 含義 |
| :---------------- | :----------------------------------------------------------- |
| 'figure points' | 以繪圖區(qū)左下角為參考,單位是點數(shù) |
| 'figure pixels' | 以繪圖區(qū)左下角為參考,單位是像素數(shù) |
| 'figure fraction' | 以繪圖區(qū)左下角為參考,單位是百分比 |
| 'axes points' | 以子繪圖區(qū)左下角為參考,單位是點數(shù)(一個figure可以有多個axex,默認(rèn)為1個) |
| 'axes pixels' | 以子繪圖區(qū)左下角為參考,單位是像素數(shù) |
| 'axes fraction' | 以子繪圖區(qū)左下角為參考,單位是百分比 |
| 'data' | 以被注釋的坐標(biāo)點xy為參考 (默認(rèn)值) |
| 'polar' | *不使用本地數(shù)據(jù)坐標(biāo)系,使用極坐標(biāo)系* |
- **textcoords** :注釋文本的坐標(biāo)系屬性,默認(rèn)與xycoords屬性值相同,也可設(shè)為不同的值。
- **arrowprops:**箭頭的樣式,dict(字典)型數(shù)據(jù),如果該屬性非空,則會在注釋文本和被注釋點之間畫一個箭頭。如果不設(shè)置`'arrowstyle'` 關(guān)鍵字,則允許包含以下關(guān)鍵字:
| 關(guān)鍵字 | 說明 |
| :--------- | :-------------------------------------------------- |
| width | 箭頭的寬度(單位是點) |
| headwidth | 箭頭頭部的寬度(點) |
| headlength | 箭頭頭部的長度(點) |
| shrink | 箭頭兩端收縮的百分比(占總長) |
| ? | 任何 `matplotlib.patches.FancyArrowPatch中的關(guān)鍵字` |
##### 3. 實例代碼
```python
import matplotlib.pyplot as plt
import numpy as np
plt.rcParams['font.sans-serif'] = ['Simhei']
# 中文情況下 負(fù)號顯示會有異常 所以還需要設(shè)置負(fù)號的操作
plt.rcParams['axes.unicode_minus'] = False
x = np.linspace(1, 20, 100) # 生成100個從0.01到12的均勻數(shù)值
y = np.cos(x) # 余弦函數(shù)
plt.plot(x,y,ls='-',color='r',lw=2,label='plot繪圖') # 設(shè)置繪圖屬性
plt.legend()
plt.annotate('maxvalue', # 圖形注釋的文本
xy=(np.pi*2,1.0), # 被注釋的圖形內(nèi)容坐標(biāo)
xytext=(8,0.75), # 注釋文本位置坐標(biāo)
weight='bold', # 注釋文本字體粗細(xì)
color='c', # 注釋文本字體顏色,洋紅色
arrowprops=dict(arrowstyle='->',connectionstyle='arc3',color='c')) # 箭頭的屬性
plt.show()
```
##### 4. 效果
### text()函數(shù)
##### 1.函數(shù)功能
通過函數(shù)方式,向axes對象添加text文本對象,確切的說是向 axes的(x,y)位置添加文本,返回一個text實例。
##### 2.參數(shù)說明
> matplotlib.pyplot.text(x, y, s, fontdict=None, withdash=False, **kwargs)
- x:注釋位置的橫坐標(biāo)
- y:注釋位置的縱坐標(biāo)
- s:注釋的文本內(nèi)容
- kwargs:可以設(shè)置如下
fontsize設(shè)置字體大小,默認(rèn)12,可選參數(shù) [‘xx-small’, ‘x-small’, ‘small’, ‘medium’, ‘large’,‘x-large’, ‘xx-large’]
fontweight設(shè)置字體粗細(xì),可選參數(shù) [‘light’, ‘normal’, ‘medium’, ‘semibold’, ‘bold’, ‘heavy’, ‘black’]
fontstyle設(shè)置字體類型,可選參數(shù)[ ‘normal’ | ‘italic’ | ‘oblique’ ],italic斜體,oblique傾斜
verticalalignment設(shè)置水平對齊方式 ,可選參數(shù) : ‘center’ , ‘top’ , ‘bottom’ ,‘baseline’
horizontalalignment設(shè)置垂直對齊方式,可選參數(shù):left,right,center
rotation(旋轉(zhuǎn)角度)可選參數(shù)為:vertical,horizontal 也可以為數(shù)字
alpha透明度,參數(shù)值0至1之間
backgroundcolor標(biāo)題背景顏色
bbox給標(biāo)題增加外框 ,常用參數(shù)如下:
boxstyle方框外形
facecolor(簡寫fc)背景顏色
edgecolor(簡寫ec)邊框線條顏色
##### 3. 實例代碼
```python
import matplotlib.pyplot as plt
import numpy as np
plt.rcParams['font.sans-serif'] = ['Simhei']
# 中文情況下 負(fù)號顯示會有異常 所以還需要設(shè)置負(fù)號的操作
plt.rcParams['axes.unicode_minus'] = False
x = np.linspace(1, 20, 100)
y = np.tan(x)
plt.plot(x,y,ls='-.',lw=1,c='#aa88ff',label='text使用繪圖')
plt.legend()
plt.text(2,-200,'y=tan(x)',weight='bold',color='r')
plt.show()
```
##### 4.效果
### title()函數(shù)
##### 1.函數(shù)功能
用來設(shè)置圖表的標(biāo)題。
2.參數(shù)說明
> matplotlib.pyplot.title(label, fontdict=None, loc='center', pad=None, **kwargs)
- **label:**str, 標(biāo)題文本
- **fontdict:** dict, 一個字典用來控制標(biāo)題的字體樣式,默認(rèn)值如下:
```bash
{'fontsize': rcParams['axes.titlesize'],
'fontweight' : rcParams['axes.titleweight'],
'verticalalignment': 'baseline',
'horizontalalignment': loc}
```
- **loc:** str, 標(biāo)題水平樣式可為{'center', 'left', 'right'},分別表示居中,水平居左和居右,默認(rèn)為水平居中。
- **pad:** float, 表示標(biāo)題離圖表頂部的距離,默認(rèn)為None.
- **kwargs:** 可以設(shè)置一些其他的文本屬性。
##### 3. 實例代碼
```python
import matplotlib.pyplot as plt
import numpy as np
plt.rcParams['font.sans-serif'] = ['Simhei']
# 中文情況下 負(fù)號顯示會有異常 所以還需要設(shè)置負(fù)號的操作
plt.rcParams['axes.unicode_minus'] = False
x = np.linspace(1, 10, 100)
y = np.cos(x)
plt.plot(x,y,ls='-.',lw=1,c='#aa88ff',label='title使用繪圖')
plt.legend()
plt.title('cos(x)繪圖')
plt.show()
```
##### 4. 效果
### legend()函數(shù)
##### 1.函數(shù)功能
顯示圖表圖例,并設(shè)置圖例位置
##### 2.參數(shù)說明
> matplotlib.pyplot.legend(*args, **kwargs)
- loc : 圖例所有figure位置
| 位置字符串 | 含義 | 位置代碼 |
| :------------: | :--------------: | :------: |
| 'best' | 自動尋找最佳位置 | 0 |
| 'upper right' | 右上 | 1 |
| 'upper left' | 左上 | 2 |
| 'lower left' | 左下 | 3 |
| 'lower right' | 右下 | 4 |
| 'right' | 右 | 5 |
| 'center left' | 左中 | 6 |
| 'center right' | 右中 | 7 |
| 'lower center' | 中下 | 8 |
| 'upper center' | 中上 | 9 |
| 'center' | 正中 | 10 |
- prop : 字體參數(shù)
- fontsize: 字體大小
- markerscale : 圖例標(biāo)記與原始標(biāo)記的相對大小
- markerfirst:如果為True,則圖例標(biāo)記位于圖例標(biāo)簽的左側(cè)
- numpoints:為線條圖圖例條目創(chuàng)建的標(biāo)記點數(shù)
- scatterpoints:為散點圖圖例條目創(chuàng)建的標(biāo)記點數(shù)
- scatteryoffsets:為散點圖圖例條目創(chuàng)建的標(biāo)記的垂直偏移量
- frameon:控制是否應(yīng)在圖例周圍繪制框架
- fancybox:控制是否應(yīng)在構(gòu)成圖例背景的FancyBboxPatch周圍啟用圓邊
- shadow:控制是否在圖例后面畫一個陰影
- framealpha:控制圖例框架的 Alpha 透明度
##### 3. 實例代碼
```dart
import matplotlib.pyplot as plt
import numpy as np
x = np.linspace(0.1,10,100)
y = np.sin(x)
z = np.cos(x)
plt.plot(x,y,ls='-',lw=1,c='m',label='legend繪圖1')
plt.plot(x,z,ls='-.',lw=1,c='g',label='legend繪圖2')
plt.legend(loc='lower right')
plt.show()
```
##### 4. 效果