全国旗舰校区

不同学习城市 同样授课品质

北京

深圳

上海

广州

郑州

大连

武汉

成都

西安

杭州

青岛

重庆

长沙

哈尔滨

南京

太原

沈阳

合肥

贵阳

济南

下一个校区
就在你家门口
+
当前位置:首页  >  技术干货

数据分析之绘制各种图形

发布时间:2022-08-12 15:12:00
发布人:wjy

#### 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. 效果

截屏2021-09-14 上午11.14.42

### 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.效果

截屏2021-09-14 上午11.17.56

### 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.效果对比

截屏2021-09-14 上午11.24.51

如果把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.效果

截屏2021-09-14 上午11.29.59

### 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.效果

截屏2021-09-14 上午11.55.59

### 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.效果

截屏2021-09-14 上午11.59.15

### 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. 效果

截屏2021-09-14 下午12.06.49

### 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.效果

截屏2021-09-14 下午12.16.12

### 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. 效果

截屏2021-09-14 下午12.19.59

### 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. 效果

截屏2021-09-14 下午12.25.40

相关文章

明道、teambition、Tower.im、Worktile、trello的功能都有哪些?

明道、teambition、Tower.im、Worktile、trello的功能都有哪些?

2023-10-14
反欺诈中所用到的机器学习模型有哪些?

反欺诈中所用到的机器学习模型有哪些?

2023-10-14
强化学习中on-policy与off-policy有什么区别?

强化学习中on-policy与off-policy有什么区别?

2023-10-14
为什么交叉熵可以用于计算代价?

为什么交叉熵可以用于计算代价?

2023-10-14

最新文章

常见网络安全面试题:Windows常用的命令有哪些?

常见网络安全面试题:Windows常用的命令有哪些?

2023-10-09
常见网络安全面试题:根据设备告警如何展开排查?

常见网络安全面试题:根据设备告警如何展开排查?

2023-10-09
常见网络安全面试题:mysql加固呢?(数据库加固)

常见网络安全面试题:mysql加固呢?(数据库加固)

2023-10-09
常见网络安全面试题:windows和linux加固?(操作系统加固)

常见网络安全面试题:windows和linux加固?(操作系统加固)

2023-10-09
在线咨询 免费试学 教程领取