Cartopy 一次通过一个时在两极绘制额外的点
Cartopy plotting extra points at poles when passed one at a time
当用地球另一边的一些点绘制正交投影时,为什么第一种方法按预期绘制,但第二种方法获取了地球另一边的所有点并绘制它们在投影的极点?除了过滤掉看不见的点之外,还有其他解决方案吗?如果没有,对于任意 lon/lat 处的极点(相对于相对微不足道的北极而言),最好的方法是什么? ?
import numpy as np
import matplotlib.pyplot as plt
import cartopy.crs as ccrs
projection = ccrs.Orthographic(0, 90)
transform = ccrs.Geodetic()
fig = plt.figure()
ax = fig.add_subplot(1, 1, 1, projection = projection)
ax.coastlines()
ax.set_global()
ax.gridlines()
npoints = 100
np.random.seed(71077345)
lon = np.random.sample(npoints) * 360
lat = np.random.sample(npoints) * 180 - 90
plt.plot(lon,
lat,
'ro',
alpha = 0.3,
transform = transform)
for i in range(npoints):
plt.plot(lon[i],
lat[i],
'b.',
alpha = 0.3,
transform = transform)
(问题的部分答案)
要过滤上半球的点,请使用此代码
for i in range(npoints):
if lat[i]>=0:
# this plots points above/on equator
ccode = 'b^'
ax.plot( lon[i], lat[i],
ccode,
alpha = .3,
transform = ccrs.PlateCarree()
)
else:
# this skips points below equator
pass
此错误已在 v0.19 及更高版本中由 #1710 修复。
当用地球另一边的一些点绘制正交投影时,为什么第一种方法按预期绘制,但第二种方法获取了地球另一边的所有点并绘制它们在投影的极点?除了过滤掉看不见的点之外,还有其他解决方案吗?如果没有,对于任意 lon/lat 处的极点(相对于相对微不足道的北极而言),最好的方法是什么? ?
import numpy as np
import matplotlib.pyplot as plt
import cartopy.crs as ccrs
projection = ccrs.Orthographic(0, 90)
transform = ccrs.Geodetic()
fig = plt.figure()
ax = fig.add_subplot(1, 1, 1, projection = projection)
ax.coastlines()
ax.set_global()
ax.gridlines()
npoints = 100
np.random.seed(71077345)
lon = np.random.sample(npoints) * 360
lat = np.random.sample(npoints) * 180 - 90
plt.plot(lon,
lat,
'ro',
alpha = 0.3,
transform = transform)
for i in range(npoints):
plt.plot(lon[i],
lat[i],
'b.',
alpha = 0.3,
transform = transform)
(问题的部分答案)
要过滤上半球的点,请使用此代码
for i in range(npoints):
if lat[i]>=0:
# this plots points above/on equator
ccode = 'b^'
ax.plot( lon[i], lat[i],
ccode,
alpha = .3,
transform = ccrs.PlateCarree()
)
else:
# this skips points below equator
pass
此错误已在 v0.19 及更高版本中由 #1710 修复。