标签: cartopy

NorthPolarStereo 的中心经度

我想用 180 在图的底部绘制北半球的极地立体图,以便我可以强调太平洋地区。我正在使用来自 git 的最新 cartopy,并且可以制作极坐标立体图没有问题,但我无法弄清楚如何更改图底部的经度。我尝试将经度范围设置为 [-180, 180] 但这没有帮助,而且 NorthPolarStereo() 不接受任何关键字参数,如 central_longitude。目前这可能吗?

cartopy

5
推荐指数
1
解决办法
1433
查看次数

防止未网格 pcolor(mesh) 数据出现虚假水平线

当我有一段跨越反子午线的未网格纬度/经度/数据对时,经度从 -180 交换到 +180,如何防止 cartopy 绘制pcolor(mesh)填充整个地球的网格单元?我的问题与此处的问题相同,只是我使用的是cartopy而不是basemap. 对链接问题(关于basemap)的一条近 5 年的评论声称有一个cartopy解决方案,但尚未发布。

\n\n

示例代码:

\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)

python matplotlib cartopy

5
推荐指数
2
解决办法
2701
查看次数

在 Windows 上安装 Cartopy 和依赖项

我想在 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?

python geos cartopy

5
推荐指数
1
解决办法
4868
查看次数

添加对象后是否可以更改 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)

python-3.x cartopy

5
推荐指数
1
解决办法
806
查看次数

在 NorthPolarStereo 投影中使用 Cartopy 绘制圆圈

我想在 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)

projection matplotlib cartopy

5
推荐指数
1
解决办法
1921
查看次数

在 matplotlib 中使用 cartopy 投影时无法删除轴脊

我一直在 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 …

python matplotlib cartopy

5
推荐指数
0
解决办法
1184
查看次数

cartopy 设置范围,central_longitude=180

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)

这正确地划分了纬度子集: y_正确 这正确地划分了经度子集,但有额外的标签:

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)

在此输入图像描述

python dictionary matplotlib cartopy extent

5
推荐指数
2
解决办法
9469
查看次数

为 Cartopy 地图中缺失的数据指定不透明颜色

当使用 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)

matplotlib cartopy

5
推荐指数
1
解决办法
1259
查看次数

如何使用 Python 的 matplotlib 绘制地图以便将小岛屿国家也包括在内?

我有一个使用 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 解决方案。

python matplotlib cartopy geopandas

5
推荐指数
1
解决办法
2770
查看次数

无法为 cartopy linux 安装 Proj 8.0.0

我正在尝试在 Ubuntu 上安装 Cartopy,并且需要安装proj v8.0.0Cartopy 的二进制文件。然而,当我尝试时,apt-get install proj-bin我只能得到proj v6.3.1。如何安装最新(或至少v8.0.0)的 cartopy 项目?

python linux ubuntu proj cartopy

5
推荐指数
1
解决办法
3326
查看次数