#### plot 函数
##### 1. 函数功能
通常用于绘制线图。
##### 2.参数说明:
> plot([x], y, [fmt], data=None, **kwargs) # 单条线:
>
> plot([x], y, [fmt], [x2], y2, [fmt2], ..., **kwargs) # 多条线一起画
- x:x轴上的数字
- y:y轴上的数字
- 可选参数[fmt] 是一个字符串来定义图的基本属性如:颜色(color),点型(marker),线型(linestyle),
具体形式 fmt = '[color][marker][line]'
- ls:linestyle 即折线的风格
- lw: linewidth 即折线线条的宽度
- color:线条的颜色
如果要使用颜色,常用的颜色简写(更多的颜色使用可以参照上篇文章):
| 简写 | 颜色 |
| :--: | :-----------: |
| 'b' | 蓝色(blue) |
| 'g' | 绿色(green) |
| 'r' | 红色(red) |
| 'c' | 青色(cyan) |
| 'm' | 洋红(magenta) |
| 'y' | 黄色(yellow) |
| 'k' | 黑色(black) |
| 'w' | 白色(white) |
- label:标记图形内容的标签文本
- marker: 就是数据点的形状,比如原点,三角形,加号等等
##### 3. 实例代码
```python
import matplotlib.pyplot as plt
import numpy as np
plt.rcParams['font.sans-serif'] = ['Simhei']
# 中文情况下 负号显示会有异常 所以还需要设置负号的操作
plt.rcParams['axes.unicode_minus'] = False
x = np.linspace(0.01, 12, 100) # 生成100个从0.01到12的均匀数值
y = np.cos(x) # 余弦函数
plt.plot(x,y,ls='-',color='r',lw=2,label='plot绘图') # 设置绘图属性
plt.legend() # 设置显示图例
plt.show() # 显示图像
```
##### 4. 效果
### scatter()函数
##### 1. 函数功能
寻找变量之间的关系,用于绘制散点图。
##### 2.参数说明:
> ```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,)
输入数据
- s:标量或array_like,shape(n,),可选
大小以点数^ 2。默认是`rcParams ['lines.markersize'] ** 2`。
- c:颜色,顺序或颜色顺序,可选,默认:'b'
- marker:`〜matplotlib.markers.MarkerStyle`,可选,默认值:'o'
- cmap:`〜matplotlib.colors.Colormap`,可选,默认:无
一个`〜matplotlib.colors.Colormap`实例或注册名称, `cmap`仅在`c`是浮点数组时使用。如果没有, 默认为rc`image.cmap`。
- norm:`〜matplotlib.colors.Normalize`,可选,默认:无
`〜matplotlib.colors.Normalize`实例用于缩放亮度数据为0,1。`norm`只有在`c`是一个数组时才被使用。如果`None',则使用默认值:func:`normalize`。
- edgecolors :颜色或颜色顺序,可选,默认值:无
如果无,则默认为'face', 如果'face',边缘颜色将永远是相同的脸色。如果它是'none',补丁边界不会被画下来。
##### 3.实例代码
```python
import matplotlib.pyplot as plt
import numpy as np
plt.rcParams['font.sans-serif'] = ['Simhei']
# 中文情况下 负号显示会有异常 所以还需要设置负号的操作
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的数据规模必须要相同
plt.legend()
plt.show()
```
##### 4.效果
### xlim()和 ylim()函数
##### 1. 函数功能
在Python的matplotlib.pyplot中方法xlim和ylim的使用方法相同,分别用来设置x轴和y轴的显示范围。
##### 2.参数说明:
对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']
# 中文情况下 负号显示会有异常 所以还需要设置负号的操作
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() # 显示图例
# 设置x 和 y 轴的刻度
plt.xlim(5,15)
plt.ylim(0,1)
plt.show()
```
##### 4.效果对比
如果把x轴刻度调成与生成范围一致(1~20),我们就会发现线条布满了x轴范围。
### xlabel()和 ylabel函数
##### 1. 函数功能
设置x轴或者y 轴的标签文本
##### 2.参数说明:
> matplotlib.pyplot.ylabel(s, *args, **kwargs)
>
> matplotlib.pyplot.xlabel(s, *args, **kwargs)
设置坐标轴x轴文本标签`xlabel(string)`
设置y轴文本标签`ylabel(string)`
fontsize:数字或’small’,‘large’,‘medium’
verticalalignment:表示上下平移向figure与axis之间的中间线对齐,字母底端为‘top’‘top’, ‘bottom’, ‘center’,‘baseline’.
horizontalalignment:意思为左右平移向中间对齐.如’left’,若为xlabel则标识最左边对齐figure的中垂线,若为ylabel则标识最左边对齐figure的中横线.取值可以是:‘center’, ‘right’, ‘left’
rotation: 意思为旋转,取值有:‘vertical’,‘horizontal’
##### 3.实例代码
```python
import matplotlib.pyplot as plt
import numpy as np
plt.rcParams['font.sans-serif'] = ['Simhei']
# 中文情况下 负号显示会有异常 所以还需要设置负号的操作
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() # 显示图例
# 设置x和y轴的标签
plt.xlabel('x轴标签') # 设置x轴文本标签
plt.ylabel('y轴标签') # 设置y轴文本标签
plt.show()
```
##### 4.效果
### grid()函数
##### 1. 函数功能
绘制刻度线的网格线
##### 2.参数说明
> grid(b=None, which=‘major’, axis=‘both’, **kwargs)
b: 表示布尔类型的参数是否显示网格线,如果提供了参数,则认为需要显示网格,b=True
which: {‘major’, ‘minor’, ‘both’}, optional。 The grid lines to apply the changes on.
可选参数,取值为 ‘major’, ‘minor’, ‘both’,需要修改的网格线
axis:{‘both’, ‘x’, ‘y’}, optional The axis to apply the changes on.
可选参数,需要修改的坐标轴
**kwargs:Define the line properties of the grid, e.g.:grid(color=‘r’, linestyle=’-’, linewidth=2)
定义网格线的属性,如:颜色,风格、粗细等
##### 3.实例代码
```
import matplotlib.pyplot as plt
import numpy as np
plt.rcParams['font.sans-serif'] = ['Simhei']
# 中文情况下 负号显示会有异常 所以还需要设置负号的操作
plt.rcParams['axes.unicode_minus'] = False
x = np.linspace(1, 20, 200) # 从1到20均匀取200个数
y = np.random.randn(200) # 在标准正态分布中随机取200个数
plt.scatter(x,y,s=10,c='b',label='散点图绘制') # x,y的数据规模必须要相同
plt.legend()
# 设置网格线
plt.grid(axis='both',linestyle=":",color='g')
plt.show()
```
##### 4.效果
### axvspan()和函数
##### 1.函数功能
允许我们添加一个跨坐标轴的水平带(矩形)和跨坐标轴的垂直带(矩形).主要为用户提供一定的参照.
##### 2.参数说明:
> axvspan(xmin, xmax, ymin=0, ymax=1, **kwargs)
>
> axhspan(xmin, xmax, ymin=0, ymax=1, **kwargs)
- xmin:参考区域的其实位置
- xmax:参考区域的终止位置
- facecolor:参考区域的填充颜色
- alpha:参考区域填充颜色的透明度
##### 3. 实例代码
```python
import matplotlib.pyplot as plt
import numpy as np
plt.rcParams['font.sans-serif'] = ['Simhei']
# 中文情况下 负号显示会有异常 所以还需要设置负号的操作
plt.rcParams['axes.unicode_minus'] = False
x = np.linspace(1, 20, 200) # 从1到20均匀取200个数
y = np.random.randn(200) # 在标准正态分布中随机取200个数
plt.scatter(x,y,s=10,c='r',label='散点图绘制') # x,y的数据规模必须要相同
plt.legend()
# 设置参考区域
plt.axvspan(5, 10, facecolor='b', alpha=0.2)
plt.axhspan(-1, 1, facecolor='g', alpha=0.2)
plt.show()
```
##### 4.效果
### annotate()函数
##### 1.函数功能
annotate用于在图形上给数据添加文本注解,而且支持带箭头的划线工具,方便我们在合适的位置添加描述信息。
##### 2.参数说明
> annotate(s, xy, \*args, **kwargs)*
- **s:**注释文本的内容
- **xy:**被注释的坐标点,二维元组形如(x,y)
- **xytext:**注释文本的坐标点,也是二维元组,默认与xy相同
- weight:注释的文本的粗细风格
- color:注释文本的颜色
- **xycoords:**被注释点的坐标系属性,允许输入的值如下
- | 属性值 | 含义 |
| :---------------- | :----------------------------------------------------------- |
| 'figure points' | 以绘图区左下角为参考,单位是点数 |
| 'figure pixels' | 以绘图区左下角为参考,单位是像素数 |
| 'figure fraction' | 以绘图区左下角为参考,单位是百分比 |
| 'axes points' | 以子绘图区左下角为参考,单位是点数(一个figure可以有多个axex,默认为1个) |
| 'axes pixels' | 以子绘图区左下角为参考,单位是像素数 |
| 'axes fraction' | 以子绘图区左下角为参考,单位是百分比 |
| 'data' | 以被注释的坐标点xy为参考 (默认值) |
| 'polar' | *不使用本地数据坐标系,使用极坐标系* |
- **textcoords** :注释文本的坐标系属性,默认与xycoords属性值相同,也可设为不同的值。
- **arrowprops:**箭头的样式,dict(字典)型数据,如果该属性非空,则会在注释文本和被注释点之间画一个箭头。如果不设置`'arrowstyle'` 关键字,则允许包含以下关键字:
| 关键字 | 说明 |
| :--------- | :-------------------------------------------------- |
| width | 箭头的宽度(单位是点) |
| headwidth | 箭头头部的宽度(点) |
| headlength | 箭头头部的长度(点) |
| shrink | 箭头两端收缩的百分比(占总长) |
| ? | 任何 `matplotlib.patches.FancyArrowPatch中的关键字` |
##### 3. 实例代码
```python
import matplotlib.pyplot as plt
import numpy as np
plt.rcParams['font.sans-serif'] = ['Simhei']
# 中文情况下 负号显示会有异常 所以还需要设置负号的操作
plt.rcParams['axes.unicode_minus'] = False
x = np.linspace(1, 20, 100) # 生成100个从0.01到12的均匀数值
y = np.cos(x) # 余弦函数
plt.plot(x,y,ls='-',color='r',lw=2,label='plot绘图') # 设置绘图属性
plt.legend()
plt.annotate('maxvalue', # 图形注释的文本
xy=(np.pi*2,1.0), # 被注释的图形内容坐标
xytext=(8,0.75), # 注释文本位置坐标
weight='bold', # 注释文本字体粗细
color='c', # 注释文本字体颜色,洋红色
arrowprops=dict(arrowstyle='->',connectionstyle='arc3',color='c')) # 箭头的属性
plt.show()
```
##### 4. 效果
### text()函数
##### 1.函数功能
通过函数方式,向axes对象添加text文本对象,确切的说是向 axes的(x,y)位置添加文本,返回一个text实例。
##### 2.参数说明
> matplotlib.pyplot.text(x, y, s, fontdict=None, withdash=False, **kwargs)
- x:注释位置的横坐标
- y:注释位置的纵坐标
- s:注释的文本内容
- kwargs:可以设置如下
fontsize设置字体大小,默认12,可选参数 [‘xx-small’, ‘x-small’, ‘small’, ‘medium’, ‘large’,‘x-large’, ‘xx-large’]
fontweight设置字体粗细,可选参数 [‘light’, ‘normal’, ‘medium’, ‘semibold’, ‘bold’, ‘heavy’, ‘black’]
fontstyle设置字体类型,可选参数[ ‘normal’ | ‘italic’ | ‘oblique’ ],italic斜体,oblique倾斜
verticalalignment设置水平对齐方式 ,可选参数 : ‘center’ , ‘top’ , ‘bottom’ ,‘baseline’
horizontalalignment设置垂直对齐方式,可选参数:left,right,center
rotation(旋转角度)可选参数为:vertical,horizontal 也可以为数字
alpha透明度,参数值0至1之间
backgroundcolor标题背景颜色
bbox给标题增加外框 ,常用参数如下:
boxstyle方框外形
facecolor(简写fc)背景颜色
edgecolor(简写ec)边框线条颜色
##### 3. 实例代码
```python
import matplotlib.pyplot as plt
import numpy as np
plt.rcParams['font.sans-serif'] = ['Simhei']
# 中文情况下 负号显示会有异常 所以还需要设置负号的操作
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()函数
##### 1.函数功能
用来设置图表的标题。
2.参数说明
> matplotlib.pyplot.title(label, fontdict=None, loc='center', pad=None, **kwargs)
- **label:**str, 标题文本
- **fontdict:** dict, 一个字典用来控制标题的字体样式,默认值如下:
```bash
{'fontsize': rcParams['axes.titlesize'],
'fontweight' : rcParams['axes.titleweight'],
'verticalalignment': 'baseline',
'horizontalalignment': loc}
```
- **loc:** str, 标题水平样式可为{'center', 'left', 'right'},分别表示居中,水平居左和居右,默认为水平居中。
- **pad:** float, 表示标题离图表顶部的距离,默认为None.
- **kwargs:** 可以设置一些其他的文本属性。
##### 3. 实例代码
```python
import matplotlib.pyplot as plt
import numpy as np
plt.rcParams['font.sans-serif'] = ['Simhei']
# 中文情况下 负号显示会有异常 所以还需要设置负号的操作
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()函数
##### 1.函数功能
显示图表图例,并设置图例位置
##### 2.参数说明
> 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 : 字体参数
- fontsize: 字体大小
- markerscale : 图例标记与原始标记的相对大小
- markerfirst:如果为True,则图例标记位于图例标签的左侧
- numpoints:为线条图图例条目创建的标记点数
- scatterpoints:为散点图图例条目创建的标记点数
- scatteryoffsets:为散点图图例条目创建的标记的垂直偏移量
- frameon:控制是否应在图例周围绘制框架
- fancybox:控制是否应在构成图例背景的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. 效果