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

新手上路,请多包涵

我正在尝试制作散点图并用列表中的不同数字注释数据点。因此,例如,我想绘制 y vs 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')

有任何想法吗?

原文由 Labibah 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 257
2 个回答

我不知道有任何采用数组或列表的绘图方法,但您可以使用 annotate() 迭代 n 中的值。

 import matplotlib.pyplot as plt
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网站:

在此处输入图像描述

原文由 Rutger Kassies 发布,翻译遵循 CC BY-SA 4.0 许可协议

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

我尝试运行以下代码

import matplotlib.pyplot as plt
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)

我最终使用以下代码解决了错误

import matplotlib.pyplot as plt
plt.scatter(z, y)

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

我没想到 .scatter().subplot() 之间会有区别我应该更清楚。

原文由 Heather Claxton 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题