python绘制散点图,带label

我想在散点图中给每一个数据点添加一个label,让不同的label对应不同的点型

img


大概就是这样的,

x = [1,2,3,4]
y=[1,2,3,4]
z=[a,b,a,c]
其中有4个点,x,y是点的坐标,z里面是对应点的名称(label),我想绘制一个散点图,让不同label的点具有不同的形状。请问该怎么做,

要在散点图中为每个点添加 label,可以使用 matplotlib 库中的 annotate 函数。

这里是一个示例代码:

import matplotlib.pyplot as plt

# 定义 x, y 和 z
x = [1, 2, 3, 4]
y = [1, 2, 3, 4]
z = ['a', 'b', 'a', 'c']

# 使用 scatter 绘制散点图
plt.scatter(x, y, c=z)

# 为每个点添加 label
for i, txt in enumerate(z):
    plt.annotate(txt, (x[i], y[i]))

# 显示图像
plt.show()

这将在一个新窗口中显示一个散点图,并为每个点添加了 label。

也可以通过设置 arrowprops 参数来控制箭头的样式,或者通过设置 fontsize 参数来控制 label 的字体大小。

例如,可以使用下面的代码来控制箭头的样式和 label 的字体大小:

import matplotlib.pyplot as plt

# 定义 x, y 和 z
x = [1, 2, 3, 4]
y = [1, 2, 3, 4]
z = ['a', 'b', 'a', 'c']

# 使用 scatter 绘制散点图
plt.scatter(x, y, c=z)

# 为每个点添加 label
for i, txt in enumerate(z):
    plt.annotate(txt, (x[i], y[i]), arrowprops=dict(facecolor='black', shrink=0.05), fontsize=12)

# 显示图像
plt.show()