如果你想使用python matplotlib标记你的绘图点,我使用了以下代码。
from matplotlib import pyplot as plt
fig = plt.figure()
ax = fig.add_subplot(111)
A = anyarray
B = anyotherarray
plt.plot(A,B)
for i,j in zip(A,B):
ax.annotate('%s)' %j, xy=(i,j), xytext=(30,0), textcoords='offset points')
ax.annotate('(%s,' %i, xy=(i,j))
plt.grid()
plt.show()
我知道xytext=(30,0)
与textcoords
一起沿着,您使用这些30,0值来定位数据标签点,因此它位于y=0
和x=30
上的自己的小区域上。
您需要绘制i
和j
这两条线,否则您只能绘制x
或y
数据标签。
你可以得到这样的东西(只注意标签):
这并不理想,仍然有一些重叠。
3条答案
按热度按时间u59ebvdq1#
如何打印
(x, y)
一次。koaltpgm2#
我遇到了类似的问题,最后得到了这样的结果:
对我来说,这样做的好处是数据和注解不重叠。
在
.annotate
中使用text参数最终会导致文本位置不佳。在图例和数据点之间画线是一团乱麻,因为图例的位置很难确定。nafvub8i3#
如果不需要箭头,
text()
也可以用来标记点。您也可以通过有条件地注解点来注解某些点或更改标签相对于点的位置。此外,您还可以分配任意标签。
例如,下面的代码在
x>0
的情况下在点的左侧绘制标签,否则在右侧绘制标签。此外,annotate()
允许额外的kwargs用于美化标签。