跳转至

散点图

信息

默认省略导入:

  • import numpy as np
  • import matplotlib.pyplot as plt

可以使用pyplot中的scatter函数来绘制散点图.

scatter函数语法格式如下:

matplotlib.pyplot.scatter(x, y, s, c, marker, cmap, norm, vmin, vmax, alpha, linewidths, *, edgecolors, plotnonfinite, data, **kwargs)

参数说明:

  • x, y: 长度相同的数组, 也就是我们即将绘制散点图的数据点, 输入数据
  • s: 点的大小, 默认20, 也可以是一个数组, 数组每个参数为对应点的大小
  • c: 点的颜色, 默认颜色b, 也可以是个RGB或RGBA二维行数组
  • marker: 点的样式, 默认小圆圈o
  • cmap: colormap, 默认viridis, 标量或者是一个colormap的名字
  • norm: normalize, 默认None, 数据亮度在0-1之间
  • vmin/vmax: 亮度设置
  • alpha: 透明度设置, 0-1之间, 默认为None
  • linewidths: 标记点的长度
  • edgecolors: 颜色或颜色的序列, 默认为face
  • plotnonfinite: 布尔值, 设置是否使用非限定的c绘制点
  • **kwargs: 其他参数

例子

普通例子

例子

定义:

x = np.array([1, 2, 3, 4, 5, 6, 7, 8])
y = np.array([1, 4, 9, 16, 7, 11, 23, 18])

plt.scatter(x, y)
plt.show()

输出:

自定义图标大小

例子

定义:

x = np.array([1, 2, 3, 4, 5, 6, 7, 8])
y = np.array([1, 4, 9, 16, 7, 11, 23, 18])
sizes = np.array([20, 50, 100, 200, 500, 1000, 60, 90])

plt.scatter(x, y, s=sizes)
plt.show()

输出:

自定义点的颜色

例子

定义:

x = np.array([1, 2, 3, 4, 5, 6, 7, 8])
y = np.array([1, 4, 9, 16, 7, 11, 23, 18])
colors = np.array(["red","green","black","orange","purple","beige","cyan","magenta"])

plt.scatter(x, y, c=colors)
plt.show()

输出:

多批散点

例子

定义:

x = np.array([5,7,8,7,2,17,2,9,4,11,12,9,6])
y = np.array([99,86,87,88,111,86,103,87,94,78,77,85,86])
plt.scatter(x, y, color = 'hotpink')

x = np.array([2,2,8,1,15,8,12,9,7,3,11,4,7,14,12])
y = np.array([100,105,84,105,90,99,90,95,94,100,79,112,91,80,85])
plt.scatter(x, y, color = '#88c999')

plt.show()

输出:

使用随机数来设置散点图

例子

定义:

np.random.seed(20240701)

N = 50
x = np.random.rand(N)
y = np.random.rand(N)
colors = np.random.rand(N)
area = (30 * np.random.rand(N))**2

plt.scatter(x, y, s=area, c=colors, alpha=0.5) # 设置颜色及透明度
plt.title("Scatter Test") # 设置标题
plt.show()

输出:

使用颜色条

pyplot模块提供了很多可用的颜色条. 设置颜色调需要用到cmap参数, 默认值为viridis, 其中的每一个颜色都有一个范围从0-100的值.

注意

如果要显示颜色条, 需要用到plt.colorbar函数; 如果没有调用, 是无法显示的.

例子

定义:

x = np.array([5,7,8,7,2,17,2,9,4,11,12,9,6])
y = np.array([99,86,87,88,111,86,103,87,94,78,77,85,86])
colors = np.array([0, 10, 20, 30, 40, 45, 50, 55, 60, 70, 80, 90, 100])

plt.scatter(x, y, c=colors, cmap='viridis')
plt.colorbar()
plt.show()

输出:

定义:

x = np.array([5,7,8,7,2,17,2,9,4,11,12,9,6])
y = np.array([99,86,87,88,111,86,103,87,94,78,77,85,86])
colors = np.array([0, 10, 20, 30, 40, 45, 50, 55, 60, 70, 80, 90, 100])

plt.scatter(x, y, c=colors, cmap='afmhot_r')
plt.colorbar()
plt.show() 

输出:


  1. Matplotlib 散点图 | 菜鸟教程. (n.d.). Retrieved July 1, 2024, from https://www.runoob.com/matplotlib/matplotlib-scatter.html