绘制具有周期性边界且没有线段的精美曲线

时间:2019-01-13 00:14:21

标签: python matplotlib plot

使用库pyephem,我想找到一种方法来绘制代表卫星地面轨迹的优美曲线(经度,纬度)曲线。我已经计算出(经度,纬度),但是当经度超过+ 180°时,下一个计算出的值例如是-178°,这样就画出了一个线段:这使图形变得不好。

在我现在所拥有的代码和所获得的图形下面。

currentDate = date.datetime(2018,12,1,0,0,0);

for i in range(nPoints):
  iss.compute(currentDate)
  # compute latitude
  posLat[i] = iss.sublat*(180/math.pi)
  # compute longitude
  posLong[i] = iss.sublong*(180/math.pi)
  currentDate = currentDate + date.timedelta(seconds = (time3orbits/nPoints*3600))                
  print currentDate, posLong[i], posLat[i]

plt.plot(posLong,posLat)
plt.show()

这是我得到的数字(绕地球绕3圈): enter image description here

如何防止绘制段?问候

iss.sublatiss.sublong分别是iss位置的当前纬度和经度(来自currentDate的固定值)。

1 个答案:

答案 0 :(得分:0)

您可以根据正负号将数据数组拆分为正,然后再绘制单个子数组:

orbits = np.argwhere(
    (data[:-1, 0] * data[1:, 0] < 0)
    & (data[1:, 0] < 0)
).ravel() + 1

for orbit in np.split(data, orbits, axis=0):
    plt.plot(orbit[:, 0], orbit[:, 1])

enter image description here