gpt4 book ai didi

python-3.x - 如何在循环 pandas 数据帧时标记 matplotlib 散点图中的数据点?

转载 作者:行者123 更新时间:2023-12-01 17:50:18 26 4
gpt4 key购买 nike

我有一个 pandas 数据框,包括以下列:

label = ('A' , 'D' , 'K', 'L', 'P')
x = (1 , 4 , 9, 6, 4)
y = (2 , 6 , 5, 8, 9)
plot_id = (1 , 1 , 2, 2, 3)

我想创建 3 个独立的散点图 - 每个 plot_id 一个。因此,第一个散点图应包含 plot_id == 1 的所有条目,以及点 (1,2) 和 (4,6)。每个数据点都应该用label来标记。因此,第一个图应该具有标签 AB

我知道我可以使用 annotate 进行标记,并且我熟悉 for 循环。但我不知道如何将两者结合起来。

我希望我可以发布我迄今为止所做的更好的代码片段 - 但这太糟糕了。这是:

for i in range(len(df.plot_id)):
plt.scatter(df.x[i],df.y[i])
plt.show()

这就是我所得到的一切 - 不幸的是。关于如何进行的任何想法?

最佳答案

更新答案
保存单独的图像文件

def annotate(row, ax):
ax.annotate(row.label, (row.x, row.y),
xytext=(10, -5), textcoords='offset points')

for pid, grp in df.groupby('plot_id'):
ax = grp.plot.scatter('x', 'y')
grp.apply(annotate, ax=ax, axis=1)
plt.savefig('{}.png'.format(pid))
plt.close()

1.png
enter image description here

2.png
enter image description here

3.png
enter image description here

旧答案
对于那些想要这样的东西的人

def annotate(row, ax):
ax.annotate(row.label, (row.x, row.y),
xytext=(10, -5), textcoords='offset points')

fig, axes = plt.subplots(df.plot_id.nunique(), 1)
for i, (pid, grp) in enumerate(df.groupby('plot_id')):
ax = axes[i]
grp.plot.scatter('x', 'y', ax=ax)
grp.apply(annotate, ax=ax, axis=1)
fig.tight_layout()

enter image description here

设置

label = ('A' , 'D' , 'K', 'L', 'P')
x = (1 , 4 , 9, 6, 4)
y = (2 , 6 , 5, 8, 9)
plot_id = (1 , 1 , 2, 2, 3)

df = pd.DataFrame(dict(label=label, x=x, y=y, plot_id=plot_id))

关于python-3.x - 如何在循环 pandas 数据帧时标记 matplotlib 散点图中的数据点?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40979026/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com