使用matplotlib查找角度

时间:2015-06-30 16:43:02

标签: python matplotlib

我使用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() 

1 个答案:

答案 0 :(得分:1)

我认为您需要自己对数据进行数学运算,然后使用annotate()在地图上注释点。从您的示例中很难说valar是单个值还是向量 - 我认为单个值会给出您正在使用的语法。这是一个带有数学函数和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

输出

Picture of graph with the example points annotated