gpt4 book ai didi

Python注解箭头方向

转载 作者:行者123 更新时间:2023-11-28 17:35:50 29 4
gpt4 key购买 nike

我正在尝试使用 Matplotlib 在 Python 2.7 中注释散点图。这是剧情代码:

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt

df = pd.DataFrame(np.random.rand(5,3), columns=list('ABC'))
df.insert(0,'Annotation_Text',['ABC','DEF','GHI','JKL','mnop'])

q = 2
pqr = 1

# Scatter Plot:
x = df['A']
y = df.iloc[:,q]
plt.scatter(x, y, marker='o', label = df.columns.tolist()[q])

# Plot annotation:
plt.annotate(df.iloc[pqr,0]+', (%.2f, %.2f)' % (x.ix[pqr],y.ix[pqr]), xy=(x.ix[pqr], y.ix[pqr]), xycoords='data', xytext = (x.ix[pqr], y.ix[pqr]), textcoords='offset points', arrowprops=dict(arrowstyle='-|>'))

# Axes title/legend:
plt.xlabel('xlabel', fontsize=18)
plt.ylabel('ylabel', fontsize=16)
plt.legend(scatterpoints = 1)

plt.show()

可以看到,主线是开头的那一行plt.annotate(df.iloc[pqr,0]+', (%....... ..

我认为主要问题出在 plt.annotate() 行的这一部分:xytext = (x.ix[pqr], y.ix[pqr]), textcoords='偏移点', arrowprops=dict(arrowstyle='-|>')。从这里开始,xytext = (x.ix[pqr], y.ix[pqr]) 只是要注释的数据点的 x 和 y 坐标的元组。不幸的是,这是将注释放在数据点上,这是我不想要的。我想在数据点和注释文本之间留一些空白。

此外,我对这条线生成的箭头和注释有疑问。见下文。 Annotation Image

问题:

  • 目前,注释文本与箭头重叠。注释文本离数据点太近。我不希望它离得太近。
  • 箭头也是从右指向左的。我不认为我要求它从右到左绘制箭头,所以我不知道为什么它在这个方向上绘制箭头。

有没有办法控制文本标注不与数据点重叠?另外,如何将箭头方向从右到左更改为 a) best 方向或 b) 从左到右?

最佳答案

plt.annotate(...) , xy给出您要指向的数据的位置(箭头的一端)和 xytext给出文本的位置。在您的代码中,它们是重叠的,因为您为 xy 指定了相同的位置和 xytext .试试这个(例如):

plt.annotate(df.iloc[pqr,0]+', (%.2f, %.2f)' % (x.ix[pqr], y.ix[pqr]), xy=(x.ix[pqr], y.ix[pqr]), xycoords='data', xytext=(x.ix[pqr], y.ix[pqr]+0.3), arrowprops=dict(arrowstyle='-|>'), horizontalalignment='center')

默认情况下,箭头从文本指向数据点。如果你想改变箭头的方向,你可以使用arrowprops=dict(arrowstyle='<|-')

关于Python注解箭头方向,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30649329/

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