系列文章目录
第二章 Matplotlib 库中 pyplot.scatter() 的使用
目录
一、pyplot.scatter() 函数的参数详解
pyplot.scatter() 函数就是用来绘制散点图的。我们先来看一下官方文档。
官方文档:
matplotlib.pyplot.scatter(x, y,
s=None,
marker=None,
c=None,
cmap=None,
norm=None,
vmin=None,
vmax=None,
alpha=None,
linewidths=None,
verts=None,
edgecolors=None,
*,
data=None,
**kwargs)
其中:
- x, y,就是散点的坐标,数据点的位置
- s=None, 散点的大小,面积
- marker=None, 散点样式,默认值为实心圆,'o'
- c=None, 散点的颜色,默认为‘b’, 也就是blue
- cmap=None, 指的是matplotlib.colors.Colormap,也就是色彩映射表实例或注册的色彩映射表名称,相当于多个调色盘的合集。仅当 c 是浮点数组时才使用 cmap。
- norm=None, 如果 c 是浮点数组,则使用范数 在 0 到 1 的范围内缩放颜色数据 c,以便映射到色彩映射表 cmap。
- vmin=None, vmax=None, 这两个参数与默认规范结合使用,以将颜色数组 c 映射到色彩映射表 cmap。如果为 None,则使用颜色数组的相应最小值和最大值。当给出范数时,不可以使用这两个参数。
- alpha=None, 散点透明度([0, 1]之间的数,0表示完全透明,1则表示完全不透明)
- linewidths=None, 散点的边缘线宽
- edgecolors=None, 散点的边缘颜色
官方注释: c (颜色)可能的输入如下,
1 要使用 cmap 和norm 范数映射到颜色的 n 个数字的标量或序列。
2 一个 2D 数组,其中的行为 RGB 或 RGBA。
3 长度为 n 的颜色序列。
4 单色格式字符串。
norm、vmin、vmax 这3个参数是对散点颜色亮度进行设置
二、pyplot.scatter() 的使用
既然了解了函数的各个参数,那么话不多说,我们直接上代码。
首先只给散点坐标,其他参数默认,来看看绘制出的散点图
# 导入两个库
import matplotlib.pyplot as plt
import numpy as np
# 固定随机状态,可以获得重复数据
np.random.seed(10)
n = 20
# rand( )函数根据给定维度生成[0,1)之间的随机数据(包含0,不包含1)
x = np.random.rand(n)
y = np.random.rand(n)
# 绘制散点图
plt.scatter(x, y)
plt.show()
输出结果:(随机生成了20个散点)
设置一下常用参数,来看看效果
# 导入两个库
import matplotlib.pyplot as plt
import numpy as np
# 固定随机状态,可以获得重复数据
np.random.seed(10)
n = 20
# rand( )函数根据给定维度生成[0,1)之间的随机数据(包含0,不包含1)
x = np.random.rand(n)
y = np.random.rand(n)
area= 500*np.random.rand(n)
colors=np.random.rand(n)
# 绘制散点图
plt.scatter(x, y, s = area, marker = '*', c = colors, alpha = 0.6)
plt.show()
输出结果:(生成20个星状的散点)
设置色彩映射表 cmap 参数,使用调色盘中的颜色。
# 导入两个库
import matplotlib.pyplot as plt
import numpy as np
# 固定随机状态,可以获得重复数据
np.random.seed(10)
n =20
# rand( )函数根据给定维度生成[0,1)之间的随机数据(包含0,不包含1)
x = np.random.rand(n)
y = np.random.rand(n)
area= 2000*np.random.rand(n)
colors=np.random.rand(n)
# 绘制散点图
plt.scatter(x, y, s = area, marker = 'o', c = colors, alpha = 0.6, cmap= 'viridis' )
# 绘制颜色条
plt.colorbar()
plt.show()
输出结果:
注意:
- 这里 cmap= 'viridis' ,意思就是选择这个调色盘,将参数c中获取到的数值,映射到“色盘”中已经对应好的颜色上。
- 从“色盘”viridis中获取到的颜色,可以通过plt.colorbar( )显示为颜色条。
设置范数 norm 参数,控制颜色变化范围
其中,我们需要用到colors.Normalize( ),使用方法如下:
class matplotlib.colors.Normalize(vmin=None, vmax=None)
# 使用norm 范数参数
# 导入三个库
import matplotlib.pyplot as plt
import numpy as np
from matplotlib import colors # 调整“色盘”,导入colors
# 固定随机状态,可以获得重复数据
np.random.seed(10)
n =20
# randn( )函数返回一个或一组样本,具有标准正态分布(标准正态分布又称为u分布,是以0为均值、以1为标准差的正态分布,记为N(0,1)。)。
x = np.random.randn(n)
y = np.random.randn(n)
area = 2000*np.random.rand(n)
color = np.random.rand(n)
changecolor = colors.Normalize(vmin=0.4, vmax=0.8)
# 绘制散点图
plt.scatter(x, y, s = area, marker = 'o', c = color, alpha = 0.6, cmap= 'viridis' , norm = changecolor )
# 绘制颜色条
plt.colorbar()
plt.show()
输出结果:
可以看见,颜色的变化范围变成了(0.4, 0.8)