如何在Matplotlib中绘制给定2个点(纬度和经度)的有向线段(矢量)

2024-09-27 21:25:50 发布

您现在位置:Python中文网/ 问答频道 /正文

假设我们从Python列表开始,如下所示:

list=[[-3.7025753,40.417016,-3.7062202, 40.4285271, 20], [5.7023456,40.221567,3.67823, 41.27236, 10]]

其中:

  • 第一个元素是点A的经度(例如列表的第一个元素:-3.7025753)
  • 第二个元素是A点的纬度(例如列表第一个元素:40.417016)
  • 第三个元素是点B的经度(例如列表中的第一个元素:-3.7062202)
  • 第四个元素是点B的经度(例如列表第一个元素中的经度:40.4285271)
  • 第五个元素是震级(例如列表中第一个元素:20)

我试图在Matplotlib中获得类似于以下内容的绘图:

Expected Plot

总结:

  1. 使用绘图(x,y)清除绘图点
  2. 打印标签也可以通过Matplotlib的文本功能清除
  3. 我要问的关键未决问题是:
  • 3.1如何在原点点“定向”到目标点或命运点绘制直线

根据第一个答案,使用的功能应为:

 matplotlib.pyplot.arrow(x, y, dx, dy, **kwargs)

问题是,除了de x和y origing corrdinates之外,该函数还接收delta dx和dy。在我的问题中,点B为我提供了向量的方向,并且大小需要与其大小成比例。因此,主要问题是如何将数据从(纬度原点、经度原点、纬度命运、经度命运、大小)转换为(x、y、dx、dy)?。理解x,y从纬度和经度原点直接转换,但是dx和dy呢


Tags: 文本功能元素绘图列表matplotlib标签list
1条回答
网友
1楼 · 发布于 2024-09-27 21:25:50

最后我找到了一个解决方案:

步骤1:计算形成连接原点和命运线的坡度角度。使用此自定义函数:

import math

def CalcPendAng (lon1, lat1, lon2,lat2):

    if (lon2-lon1)==0:
        ang_grad=0 división por 0
    else:    
        m=(lat2-lat1) / (lon2-lon1)
        ang_rad=math.atan(m) 
        ang_grad=ang_rad* 180 / 3.14159265

    return ang_grad

步骤2:计算连接原点和destiny的sme线中的destiny点,但距离原点ponit=我们想要的向量的模:

def CalcLatLonDest (lon1, lat1,modulo, angulo_grad):

    factor_corrector= 0.0001

    lon2= lon1 + (modulo* math.cos(angulo_grad))
    lat2= lat1 + (modulo* math.sin(angulo_grad))
   
    return lon2, lat2

相关问题 更多 >

    热门问题