Python散点图加文本

数据可视化是数据分析和数据传达的重要工具之一。散点图是其中常用的一种图表类型,可以用来表示两个变量之间的关系。除了展示数据点的位置外,我们还可以通过在散点图上添加文本标注的方式来更好地传达数据的含义和趋势。

在本文中,我们将使用Python的matplotlib库来创建散点图,并在图中添加文本标注。我们将以一个例子来演示这个过程。

准备数据

首先,我们需要准备一些数据来绘制散点图。我们选择一个虚拟的数据集,包含了一些学生的考试成绩。每个数据点表示一个学生的成绩,其中x轴表示数学成绩,y轴表示英语成绩。我们假设数据集中有10个学生的成绩,数据如下:

学生ID 数学成绩 英语成绩
1 80 85
2 90 75
3 70 90
4 60 70
5 75 80
6 85 95
7 95 65
8 85 75
9 80 80
10 70 85

我们将这些数据保存在一个二维列表中,每个子列表表示一个学生的成绩。代码如下:

data = [[80, 85], [90, 75], [70, 90], [60, 70], [75, 80], [85, 95], [95, 65], [85, 75], [80, 80], [70, 85]]

创建散点图

接下来,我们使用matplotlib库来创建散点图。首先,我们需要导入matplotlib的pyplot模块,并给散点图添加标题和轴标签,以便更好地说明图表的含义。代码如下:

import matplotlib.pyplot as plt

plt.scatter([x[0] for x in data], [x[1] for x in data])
plt.title("Math and English Scores")
plt.xlabel("Math Score")
plt.ylabel("English Score")

在上面的代码中,我们使用scatter函数创建散点图。第一个参数是x轴的数据,第二个参数是y轴的数据。我们通过列表推导式从数据集中分别提取数学成绩和英语成绩作为x轴和y轴的数据。title函数用来添加图表的标题,xlabelylabel函数用来添加x轴和y轴的标签。

运行上述代码,我们将得到一个简单的散点图,其中每个数据点表示一个学生的数学成绩和英语成绩。

添加文本标注

为了更好地传达数据的含义,我们可以在散点图上添加文本标注,标注每个数据点对应的学生ID。我们可以通过循环遍历数据集,并使用text函数在每个数据点上添加文本标注。代码如下:

for i, point in enumerate(data):
    plt.text(point[0], point[1], str(i+1))

在上述代码中,我们使用enumerate函数获取每个数据点的索引和值。然后,我们使用text函数在数据点对应的位置添加文本标注。第一个参数是标注的x轴位置,第二个参数是标注的y轴位置,第三个参数是标注的内容。

运行上述代码,我们将得到一个有文本标注的散点图,每个数据点上都有对应的学生ID。

完整代码

下面是完整的示例代码:

import matplotlib.pyplot as plt

data = [[80, 85], [90, 75], [70, 90], [60, 70], [75, 80], [85, 95], [95, 65], [85, 75], [80, 80], [70, 85]]

plt.scatter([x[0] for x in data], [x[1] for x in data])
plt.title("Math and English Scores")
plt.xlabel("Math Score")
plt.ylabel("English Score")