我使用matplotlib相当新,但找不到任何显示如何标记点角度的示例。我需要在所有四个象限中找到角度,即如果该点是(1,1)角度= 45度,( - 1,1)角度= 135度,( - 1,-1)角度= 225度并且对于( 1,-1)它应该是315度。
以下是我需要将其添加到的功能:
def visualize(val,ar):
plt.figure()
ax = plt.gca()
ax.plot([val-5],[ar-5], marker='o', color='r')
ax.set_xlim([-5,5])
ax.set_ylim([-5,5])
plt.draw()
plt.grid()
plt.show()
答案 0 :(得分:1)
我认为您需要自己对数据进行数学运算,然后使用annotate()
在地图上注释点。从您的示例中很难说val
和ar
是单个值还是向量 - 我认为单个值会给出您正在使用的语法。这是一个带有数学函数和annotate
示例用法的示例 - 我试图保持绘图位与代码相同,只需添加位来计算度数和然后将它们放在轴上
import math
import matplotlib.pyplot as plt
#This function does the maths - turns co-ordinates into angles
#with 0 on +ve x axis, increasing anti-clockwise
def get_theta(x,y):
theta = math.atan(y*1.0/x) / (2*math.pi) * 360
if x < 0:
theta += 180
if theta < 0:
theta += 360
return theta
def visualize(val,ar):
ax = plt.gca()
ax.plot([val-5],[ar-5], marker='o', color='r')
ax.set_xlim([-5,5])
ax.set_ylim([-5,5])
#insert the following to calculate the angles and
#then annotate them on the plot
x,y = val-5,ar-5
label = get_theta(x, y)
ax.annotate(str(label)+' degrees', xy = (x, y), xytext = (-20, 20),textcoords = 'offset points')
if __name__ == '__main__':
plt.figure()
x = [6,4,4,6]
y = [6,6,4,4]
for (val, ar) in zip(x,y):
visualize(val,ar)
plt.draw()
plt.grid()
plt.show()
使用注释可以做些什么的进一步变化是in the docs。