Matplotlib散点图,每个数据点具有不同的文本

2024-09-28 20:53:57 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图做一个散点图,并从列表中用不同的数字标注数据点。 例如,我想绘制yvs x,并用n中相应的数字进行注释

y = [2.56422, 3.77284, 3.52623, 3.51468, 3.02199]
z = [0.15, 0.3, 0.45, 0.6, 0.75]
n = [58, 651, 393, 203, 123]
ax = fig.add_subplot(111)
ax1.scatter(z, y, fmt='o')

有什么想法吗


Tags: 数据add列表fig绘制数字axscatter
3条回答

我不知道有哪种绘图方法会采用数组或列表,但您可以在迭代n中的值时使用annotate()

y = [2.56422, 3.77284, 3.52623, 3.51468, 3.02199]
z = [0.15, 0.3, 0.45, 0.6, 0.75]
n = [58, 651, 393, 203, 123]

fig, ax = plt.subplots()
ax.scatter(z, y)

for i, txt in enumerate(n):
    ax.annotate(txt, (z[i], y[i]))

有许多annotate()的格式选项,请参见matplotlib website:

enter image description here

如果有人试图将上述解决方案应用于.scatter()而不是.subplot()

我试着运行以下代码

y = [2.56422, 3.77284, 3.52623, 3.51468, 3.02199]
z = [0.15, 0.3, 0.45, 0.6, 0.75]
n = [58, 651, 393, 203, 123]

fig, ax = plt.scatter(z, y)

for i, txt in enumerate(n):
    ax.annotate(txt, (z[i], y[i]))

但遇到错误,指出“无法解包不可编辑的PathCollection对象”,错误具体指向代码线fig,ax=plt.scatter(z,y)

我最终用下面的代码解决了这个错误

plt.scatter(z, y)

for i, txt in enumerate(n):
    plt.annotate(txt, (z[i], y[i]))

我没想到.scatter()和.subplot()之间会有区别 我早该知道的

在matplotlib 2.0之前的版本中,无需使用ax.scatter来打印没有标记的文本。在2.0版中,您需要ax.scatter为文本设置适当的范围和标记

y = [2.56422, 3.77284, 3.52623, 3.51468, 3.02199]
z = [0.15, 0.3, 0.45, 0.6, 0.75]
n = [58, 651, 393, 203, 123]

fig, ax = plt.subplots()

for i, txt in enumerate(n):
    ax.annotate(txt, (z[i], y[i]))

在这个{a1}中,你可以找到一个3d的例子

相关问题 更多 >