我想用 180 在图的底部绘制北半球的极地立体图,以便我可以强调太平洋地区。我正在使用来自 git 的最新 cartopy,并且可以制作极坐标立体图没有问题,但我无法弄清楚如何更改图底部的经度。我尝试将经度范围设置为 [-180, 180] 但这没有帮助,而且 NorthPolarStereo() 不接受任何关键字参数,如 central_longitude。目前这可能吗?
当我有一段跨越反子午线的未网格纬度/经度/数据对时,经度从 -180 交换到 +180,如何防止 cartopy 绘制pcolor(mesh)填充整个地球的网格单元?我的问题与此处的问题相同,只是我使用的是cartopy而不是basemap. 对链接问题(关于basemap)的一条近 5 年的评论声称有一个cartopy解决方案,但尚未发布。
示例代码:
\n\n#!/usr/bin/env python3.6\n\nimport numpy\nimport matplotlib.pyplot\nimport cartopy.crs\n\nlons = numpy.array([[-174.719, -175.297, -175.883],\n [-175.164, -175.734, -176.312],\n [-175.594, -176.164, -176.734],\n [-176.016, -176.578, -177.148],\n [-176.43 , -176.984, -177.547],\n [-176.836, -177.383, -177.938],\n [-177.227, -177.773, -178.312],\n [-177.609, -178.148, -178.688],\n [-177.984, -178.516, -179.047],\n [-178.352, -178.875, -179.398],\n [-179.727, 179.766, 179.266],\n [ 179.945, 179.445, 178.945],\n [ 179.625, 179.133, 178.641],\n [ 179.312, 178.828, 178.336],\n [ 179.008, 178.523, 178.039],\n …Run Code Online (Sandbox Code Playgroud) 我想在 Windows 上安装 Cartopy,根据http://scitools.org.uk/cartopy/docs/latest/installing.html#installing有一些依赖项。pip install cartopy在 cmd 提示符下使用时,它会提示我安装 GEOS 3.3.3 和 Proj4 4.9.0 的错误。
我已经下载了 geos-3.6.2.tar.bz2,但我不知道如何安装它。我已经提取了文件,用于cd正确的目录。
我该怎么做才能正确安装它?有没有一种简单的方法来安装 Cartopy?
我正在用cartopyPython画一些国家。为此,我使用add_geometry如下函数:
geo = ax.add_geometries(geometry,facecolor='ghostwhite', edgecolor='black',crs=data_transf)
Run Code Online (Sandbox Code Playgroud)
我希望能够更改我添加的几何对象的颜色。这样我就可以用改变颜色的国家来制作动画,而无需重新绘制每帧的所有内容。例如,这些国家一开始都是白色的,然后依次变成蓝色。
但是,我似乎找不到在添加对象后更改其颜色的方法。
对于 maplotlib 中的常规绘图,我会这样做:
import matplolib.pyplot as plt
line, = plt.plot([1,2,3],[4,5,6],'red') #Plot in red
line.set_color('green') #Change the color to green
Run Code Online (Sandbox Code Playgroud)
没有添加fromset_color的功能。事实上,似乎属性, ,... 对于 a 来说甚至不存在,如对 的调用所示。FeatureArtistcartopyadd_geometriescolorfacecolorFeatureArtistmatplotlib.artist.getp
对于绘图,调用返回:
>>import matplotlib.artist as mart
>>mart.getp(line)
agg_filter = None
alpha = None
animated = False
antialiased = True
children = []
clip_box = TransformedBbox( Bbox(x0=0.0, y0=0.0, x1=1.0, ...
clip_on = True
clip_path …Run Code Online (Sandbox Code Playgroud) 我想在 Cartopy 中以 NorthPolarStereo 投影绘制圆圈,并以经纬度单位提供中心和半径。
类似和优秀的问题和答案可用于此处的底图,以及此处的正射投影中的Cartopy找到有关正射投影中的 Cartopy 的问题和答案。但是,我想在 Cartopy 中使用 NorthPolarStereo。尝试后一种方法,只需更改投影即可使圆固定在北极,忽略您为其中心提供的坐标。
关于如何使用 NorthPolarStereo 投影在 Cartopy 中绘制圆圈的任何想法,并以纬度、经度提供其中心和半径?
import numpy as np
import cartopy.crs as ccrs
import cartopy.feature as cfeature
import matplotlib.pyplot as plt
import matplotlib.patches as mpatches
# example: draw circle with 45 degree radius around the North pole
lat = 72
lon = 100
r = 20
# Define the projection used to display the circle:
proj = ccrs.NorthPolarStereo(central_longitude=lon)
def compute_radius(ortho, radius_degrees):
phi1 = lat + …Run Code Online (Sandbox Code Playgroud) 我一直在 python 2.7 中使用 cartopy 和 matplotlib 来可视化地图上的一些数据。但是,当我尝试使用以下代码片段删除轴刺(顶部和右侧的)时:
ax1.spines['top'].set_visible(False)
ax1.spines['right'].set_visible(False)
Run Code Online (Sandbox Code Playgroud)
这是行不通的。设置书脊厚度也不起作用:
ax1.spines['left'].set_linewidth(3)
ax1.spines['bottom'].set_linewidth(3)
Run Code Online (Sandbox Code Playgroud)
当我使用 cartopy 投影时,上面的代码行不会对绘图产生影响。但如果我使用常规的 matplotlib 轴,它们就可以正常工作。我也尝试过这里
提到的 rcParams 方法,但没有成功。
我在下面包含了我的代码的精简版本:
lons=np.arange(10, 50, .5)
lats=np.arange(7, 44, .5)
xticks=np.arange(math.ceil(lons.min()),
math.floor(lons.max())+4, 4)
yticks=np.arange(math.ceil(lats.min()),
math.floor(lats.max())+4, 4)
fig=plt.figure()
ax1=fig.add_subplot(111,
projection=ccrs.PlateCarree())
ax1.set_extent([lons[0], lons[-1],
lats[0], lats[-1]],
crs=ccrs.PlateCarree())
ax1.coastlines()
ax1.set_xticks(xticks)
ax1.set_yticks(yticks)
ax1.spines['top'].set_visible(False)
ax1.spines['right'].set_visible(False)
ax1.spines['left'].set_linewidth(3)
ax1.spines['bottom'].set_linewidth(3)
plt.show()
Run Code Online (Sandbox Code Playgroud)
我使用miniconda来管理包,所使用的相关模块的版本如下:
Python - 2.7.16
matplotlib - 2.3.3
cartopy - 0.17.0
Run Code Online (Sandbox Code Playgroud)
那么,在使用 cartopy 投影时如何去除这些刺呢?
更新
我更深入地挖掘并发现了这些:
frameon=False does not remove Map Frame
Cannot Change the border width of the cartopy …
Cartopy 0.17.0:当我设置central_longitude时,我不知道如何准确设置提供的范围:
import matplotlib.pyplot as plt
import cartopy.crs as ccrs
projection = ccrs.PlateCarree(central_longitude=180)
ax = plt.axes(projection=projection)
ax.coastlines()
ax.set_extent((-120, 120, -45, 45), crs=ccrs.PlateCarree())
ax.gridlines(draw_labels=True, crs=ccrs.PlateCarree())
Run Code Online (Sandbox Code Playgroud)
这正确地划分了纬度子集:
这正确地划分了经度子集,但有额外的标签:
import matplotlib.pyplot as plt
import cartopy.crs as ccrs
projection = ccrs.PlateCarree(central_longitude=180)
ax = plt.axes(projection=projection)
ax.coastlines()
ax.set_extent((-120, 120, -45, 45))
ax.gridlines(draw_labels=True, crs=ccrs.PlateCarree())
Run Code Online (Sandbox Code Playgroud)
import matplotlib.pyplot as plt
import cartopy.crs as ccrs
projection = ccrs.PlateCarree(central_longitude=180)
ax = plt.axes(projection=projection)
ax.coastlines()
ax.set_extent((-120, 120, -45, 45), crs=projection)
ax.gridlines(draw_labels=True, crs=ccrs.PlateCarree())
Run Code Online (Sandbox Code Playgroud)
当使用 Cartopy 和 matplotlib 的 pcolormesh 来制作地图时,我无法指定缺失值的颜色。我想让所有的“nan”值都是灰色的,而不是白色/透明的。为此,我尝试使用set_badmatplotlib 颜色图的方法,但这似乎破坏了 Cartopy。该问题触发了 Cartopy 的 UserWarning,但我不知道解决方法是什么。
这是一个甚至没有 nan 值的示例,但显示了问题:
import xarray as xr
import numpy as np
import matplotlib.pyplot as plt
import cartopy.crs as ccrs
import matplotlib as mpl
import cartopy
import sys
print(f"PYTHON: {sys.version}") # PYTHON: 3.8.1 | packaged by conda-forge | (default, Jan 29 2020, 15:06:10) [Clang 9.0.1 ]
print(f" xarray {xr.__version__}") # xarray 0.14.1
print(f" numpy {np.__version__}") # numpy 1.17.3
print(f" matplotlib {mpl.__version__}") # matplotlib 3.1.2
print(f" cartopy {cartopy.__version__}") …Run Code Online (Sandbox Code Playgroud) 我有一个使用 Python 在非洲地图上绘制数据的基本设置matplotlib。不幸的是,geopandas自然地球数据库不包括小岛屿国家,而小岛屿国家也必须包括在内。
我的基本设置是这样的:
import geopandas as gpd
import numpy as np
import matplotlib.pyplot as plt
world = gpd.read_file(gpd.datasets.get_path('naturalearth_lowres'))
africa = world.query('continent == "Africa"')
africa.plot(column="pop_est")
plt.show()
Run Code Online (Sandbox Code Playgroud)
相反,我想要一个类似这样的图形,其中小岛屿国家由可见点整齐地呈现:

(图来源为:https://en.wikipedia.org/wiki/African_Continental_Free_Trade_Area#/media/File :AfricanContinentalFreeTradeArea.svg )
我有两个问题:1)geopandas自然地球数据不包括岛屿国家,2)我不知道如何将其他不可见的岛屿国家绘制为可见点。
我在 R 的 SO 中看到了一些相关问题,但它特别是我所追求的 Python 解决方案。
我正在尝试在 Ubuntu 上安装 Cartopy,并且需要安装proj v8.0.0Cartopy 的二进制文件。然而,当我尝试时,apt-get install proj-bin我只能得到proj v6.3.1。如何安装最新(或至少v8.0.0)的 cartopy 项目?
cartopy ×10
matplotlib ×6
python ×6
dictionary ×1
extent ×1
geopandas ×1
geos ×1
linux ×1
proj ×1
projection ×1
python-3.x ×1
ubuntu ×1