绘制散点图主要用到pyplot模块的scatter()函数。
详细参数可参考【matplotlib】scatter()散点图的详细参数

1. 绘制单个点

import matplotlib.pyplot as plt

plt.scatter(2, 4)

plt.show()

使用函数scatter(),并向它传递一对x和y坐标,他将在指定位置绘制这个点:


2. 设置输出的样式

import matplotlib.pyplot as plt

plt.scatter(2, 4, s=200)

plt.title("Square of Value", fontsize=24)
plt.xlabel("Value", fontsize=14)
plt.ylabel("Square", fontsize=14)
plt.tick_params(axis='both', which='major', labelsize=14)

plt.show()

scatter()函数的实参s设置了绘制的点的尺寸。
tick_params()函数的实参which接受[‘major’ | ‘minor’ | ‘both’]三个值,默认是‘major’。意思分别是表示主刻度、表示次刻度、主次刻度都显示。

3. 绘制一系列点

要绘制一系列的点,可向scatter()传递两个分别包含x和y的列表。这里我们用绘制折线图用的数据。

import matplotlib.pyplot as plt

values = list(range(1, 8))
squares = [x**2 for x in values]

plt.scatter(values, squares, s=100)

--snip--

plt.show()

这些数据传递给scatter()时,matplotlib依次从每个列表中读取一个值来绘制一个点,如(1,1)、(2,4)。效果如下:

4. 绘制更大的数据集

下面我们来尝试绘制1000个点:

import matplotlib.pyplot as plt

values = list(range(1, 1001))
squares = [x**2 for x in values]

plt.scatter(values, squares, s=40)

--snip--

#设定每个坐标轴的取值范围
plt.axis([0,1100,0,1100000])

plt.show()

由于这个数据集较大,所以我们把每个点设置得较小,并使用axis()函数指定了每个坐标轴的取值范围。

axis()函数要求提供四个值:x和y坐标轴的最小值和最大值。这里我们将x轴范围设置为01100,y轴的范围设置为01100000。最终效果如下:

5. 设置数据点的样式

--snip--

plt.scatter(values, squares, c='red', edgecolor='none', s=40)

--snip--

edgecolor实参用于指定轮廓颜色

c实参用于指定数据点的颜色

颜色可传入关键字或RGB元组,其中包含三个0~1之间的小数值,分别表示红色、绿色和蓝色分量。

具体用法可参考【matplotlib】scatter()散点图的详细参数,在此不做赘述。

效果如下:

6. 使用颜色映射(colormap)

颜色映射是一系列颜色,从起始颜色渐变到结束颜色。在可视化中,颜色映射用于突出数据的规律。例如,你可能用浅色表示较小的值,而用深色表示较大的值。
模块pyplot内置了一组颜色映射。用法演示:

--snip--
plt.scatter(values, squares, c=values, cmap=plt.cm.Blues, edgecolor='none', s=40)
--snip--

我们将参数c设置成了一个y值列表,并使用参数cmap告诉pyplot使用哪个颜色映射。效果如下:


具体参考官方文档color examples中的colormaps reference。这里提供该文中文版翻译[matplotlib官方文档]colormap参考

7. 自动保存图表

要让程序自动将图表保存到文件中,可将对plt.show()的调用替换为对plt.savefig()的调用

plt.savefig('squares.png', bbox_inches='tight')

第一个实参指定要以什么样的文件名保存图表,默认保存到当前目录,可用相对或绝对路径修改保存路径。
第二个参数指定将图表多余空白剪裁掉。若要保存多余空白,则可省略该参数。