center_longitude 上 cartopy 等高线图中的白线
White line in contour plot in cartopy on center_longitude
我正在使用 Cartopy 和 Matplotlib 绘制一些填充轮廓。数据在 latitude/longitude 网格上,当在 cartopy 投影上绘制时,一条白线沿着图的中间延伸,或者我在 ccrs.PlateCarree()
[=14 中设置 "central_longitude" 的任何地方=]
这是一个显示我在说什么的快速设置。使用代码:
import numpy as np
import matplotlib.pyplot as plt
import cartopy.crs as ccrs
import cartopy.feature as cfeature
lon = np.arange(0, 360, 1)
lat = np.arange(-90, 90, 1)
data = np.zeros((180, 360))
fig = plt.figure()
ax = plt.subplot(projection=ccrs.PlateCarree())
ax.contourf(lon, lat, data)
ax.add_feature(cfeature.COASTLINE.with_scale('50m'))
plt.show()
生成图像:
有没有办法去除这条白线?
您应该使用 cartopy.util.add_cyclic_point
以便 contourf 将数据视为 x-direction 中的连续数据并且白线将消失:
import numpy as np
import matplotlib.pyplot as plt
import cartopy.crs as ccrs
import cartopy.feature as cfeature
from cartopy.util import add_cyclic_point
lon = np.arange(0, 360, 1)
lat = np.arange(-90, 90, 1)
data = np.zeros((180, 360))
data, lon = add_cyclic_point(data, coord=lon)
fig = plt.figure()
ax = plt.subplot(projection=ccrs.PlateCarree())
ax.contourf(lon, lat, data)
ax.add_feature(cfeature.COASTLINE.with_scale('50m'))
plt.show()
我正在使用 Cartopy 和 Matplotlib 绘制一些填充轮廓。数据在 latitude/longitude 网格上,当在 cartopy 投影上绘制时,一条白线沿着图的中间延伸,或者我在 ccrs.PlateCarree()
[=14 中设置 "central_longitude" 的任何地方=]
这是一个显示我在说什么的快速设置。使用代码:
import numpy as np
import matplotlib.pyplot as plt
import cartopy.crs as ccrs
import cartopy.feature as cfeature
lon = np.arange(0, 360, 1)
lat = np.arange(-90, 90, 1)
data = np.zeros((180, 360))
fig = plt.figure()
ax = plt.subplot(projection=ccrs.PlateCarree())
ax.contourf(lon, lat, data)
ax.add_feature(cfeature.COASTLINE.with_scale('50m'))
plt.show()
生成图像:
有没有办法去除这条白线?
您应该使用 cartopy.util.add_cyclic_point
以便 contourf 将数据视为 x-direction 中的连续数据并且白线将消失:
import numpy as np
import matplotlib.pyplot as plt
import cartopy.crs as ccrs
import cartopy.feature as cfeature
from cartopy.util import add_cyclic_point
lon = np.arange(0, 360, 1)
lat = np.arange(-90, 90, 1)
data = np.zeros((180, 360))
data, lon = add_cyclic_point(data, coord=lon)
fig = plt.figure()
ax = plt.subplot(projection=ccrs.PlateCarree())
ax.contourf(lon, lat, data)
ax.add_feature(cfeature.COASTLINE.with_scale('50m'))
plt.show()