Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/338.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 在Cartopy中更改贴图边界颜色_Python_Matplotlib_Cartopy - Fatal编程技术网

Python 在Cartopy中更改贴图边界颜色

Python 在Cartopy中更改贴图边界颜色,python,matplotlib,cartopy,Python,Matplotlib,Cartopy,我正在用Cartopy绘制一张世界地图,作为这个过程的一部分,我想把所有的线都涂成白色。除了地图的边界外,我已经能够对每个元素都这样做了。这是我正在使用的代码: import matplotlib.pyplot as plt import cartopy import cartopy.io.shapereader as shpreader import cartopy.crs as ccrs fig = plt.Figure() fig.set_canvas(plt.gcf().canvas)

我正在用Cartopy绘制一张世界地图,作为这个过程的一部分,我想把所有的线都涂成白色。除了地图的边界外,我已经能够对每个元素都这样做了。这是我正在使用的代码:

import matplotlib.pyplot as plt
import cartopy
import cartopy.io.shapereader as shpreader
import cartopy.crs as ccrs

fig = plt.Figure()
fig.set_canvas(plt.gcf().canvas)

ax = plt.axes(projection=ccrs.PlateCarree())
ax.add_feature(cartopy.feature.LAND, linewidth=0.5, edgecolor='white')
ax.set_extent([-150,60,-25,60])

shpf = shpreader.natural_earth(resolution='110m', category='cultural', name='admin_0_countries')

reader = shpreader.Reader(shpf)
countries = reader.records()

for country in countries:
    ax.add_geometries(country.geometry, ccrs.PlateCarree(), facecolor=(0,1,0), linewidth=0.5, edgecolor='white', label=country.attributes['adm0_a3'])

fig.savefig("final_image.png", format='png', dpi=200)
这是最终的结果:

你知道如何在尽可能少的步骤中将边界线更改为白色或完全关闭吗


谢谢

可以使用以下线条使框架变为白色:

ax.outline_patch.set_edgecolor('white')

另一方面,
plt.axes
接受布尔关键字参数
frameon
,当设置为
False
时,该参数将阻止绘制边框。然而,Cartopy似乎忽略了这一点。这是一个潜在的bug,应该加以研究。

可能重复感谢。这是一个潜在的解决方案,适用于每个边缘都必须定制的情况。我希望我能用尽可能少的代码行完成它,并补充了这一澄清。啊,比我快!您还可以使用
ax.outline\u patch.set\u visible(False)
ax.spines['geo'].set\u edgecolor('white')
。您的解决方案已被弃用