当前位置:   article > 正文

【Matplotlib】matplotlib库 中 pyplot.scatter() 的使用_cmap='viridis

cmap='viridis

系列文章目录


第二章 Matplotlib 库中 pyplot.scatter() 的使用


目录

系列文章目录

文章目录

一、pyplot.sctter() 函数的参数详解

二、pyplot.sctter()  的使用


一、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()  的使用

既然了解了函数的各个参数,那么话不多说,我们直接上代码。

首先只给散点坐标,其他参数默认,来看看绘制出的散点图

  1. # 导入两个库
  2. import matplotlib.pyplot as plt
  3. import numpy as np
  4. # 固定随机状态,可以获得重复数据 
  5. np.random.seed(10)
  6. n = 20
  7. # rand( )函数根据给定维度生成[0,1)之间的随机数据(包含0,不包含1)
  8. x = np.random.rand(n)
  9. y = np.random.rand(n)
  10. # 绘制散点图
  11. plt.scatter(x, y)
  12. plt.show()

输出结果:(随机生成了20个散点)

 

设置一下常用参数,来看看效果

  1. # 导入两个库
  2. import matplotlib.pyplot as plt
  3. import numpy as np
  4. # 固定随机状态,可以获得重复数据
  5. np.random.seed(10)
  6. n = 20
  7. # rand( )函数根据给定维度生成[0,1)之间的随机数据(包含0,不包含1
  8. x = np.random.rand(n)
  9. y = np.random.rand(n)
  10. area= 500*np.random.rand(n)
  11. colors=np.random.rand(n)
  12. # 绘制散点图
  13. plt.scatter(x, y, s = area, marker = '*', c = colors, alpha = 0.6)
  14. plt.show()

输出结果:(生成20个星状的散点)

设置色彩映射表 cmap 参数,使用调色盘中的颜色。

  1. # 导入两个库
  2. import matplotlib.pyplot as plt
  3. import numpy as np
  4. # 固定随机状态,可以获得重复数据
  5. np.random.seed(10)
  6. n =20
  7. # rand( )函数根据给定维度生成[0,1)之间的随机数据(包含0,不包含1
  8. x = np.random.rand(n)
  9. y = np.random.rand(n)
  10. area= 2000*np.random.rand(n)
  11. colors=np.random.rand(n)
  12. # 绘制散点图
  13. plt.scatter(x, y, s = area, marker = 'o', c = colors, alpha = 0.6, cmap= 'viridis' )
  14. # 绘制颜色条
  15. plt.colorbar()
  16. plt.show()

输出结果:

注意:

  • 这里 cmap= 'viridis' ,意思就是选择这个调色盘,将参数c中获取到的数值,映射到“色盘”中已经对应好的颜色上。
  • 从“色盘”viridis中获取到的颜色,可以通过plt.colorbar( )显示为颜色条。

设置范数 norm  参数,控制颜色变化范围

其中,我们需要用到colors.Normalize( ),使用方法如下:

class matplotlib.colors.Normalize(vmin=None, vmax=None)

  1. # 使用norm 范数参数
  2. # 导入三个库
  3. import matplotlib.pyplot as plt
  4. import numpy as np
  5. from matplotlib import colors # 调整“色盘”,导入colors
  6. # 固定随机状态,可以获得重复数据
  7. np.random.seed(10)
  8. n =20
  9. # randn( )函数返回一个或一组样本,具有标准正态分布(标准正态分布又称为u分布,是以0为均值、以1为标准差的正态分布,记为N(0,1)。)。
  10. x = np.random.randn(n)
  11. y = np.random.randn(n)
  12. area = 2000*np.random.rand(n)
  13. color = np.random.rand(n)
  14. changecolor = colors.Normalize(vmin=0.4, vmax=0.8)
  15. # 绘制散点图
  16. plt.scatter(x, y, s = area, marker = 'o', c = color, alpha = 0.6, cmap= 'viridis' , norm = changecolor )
  17. # 绘制颜色条
  18. plt.colorbar()
  19. plt.show()

输出结果:

 可以看见,颜色的变化范围变成了(0.4, 0.8)

本文内容由网友自发贡献,转载请注明出处:https://www.wpsshop.cn/w/不正经/article/detail/358139
推荐阅读
  

闽ICP备14008679号