python - Cartopy-Python 语法 - 一行中多个对象/国家

标签 python cartopy

我正在遵循这个例子,Python Mapping in Matplotlib Cartopy Color One Country 。它正在与多个国家/地区充分合作,例如美国、法国、英国、日本。

for country in countries:
    if country.attributes['adm0_a3'] == 'USA':
        ax.add_geometries(country.geometry, ccrs.PlateCarree(),
                          facecolor='#008744', alpha = 0.5,
                          label=country.attributes['adm0_a3']),

    if country.attributes['adm0_a3'] == 'FRA':
        ax.add_geometries(country.geometry, ccrs.PlateCarree(),
                          facecolor='#008744', alpha = 0.5,
                          label=country.attributes['adm0_a3']),
+ 'GBR'
+ 'JPN'

else:
    ax.add_geometries(country.geometry, ccrs.PlateCarree(),
                      facecolor=('#c4e6ff'),
                      label=country.attributes['adm0_a3'])

我想将国家/地区列表放在一行中,而不是一遍又一遍地重复这些陈述。

我尝试过:

if country.attributes['adm0_a3'] == ['USA', 'FRA', 'GBR', 'JPN']:

any('美国、'法国'、'英国'、'日本')

['美国或'法国'或'英国'或'日本']

还有一个字典:

myDict = {'USA', 'FRA', 'GBR', 'JPN'}
if country.attributes['adm0_a3'] == myDict:

显然,我的逻辑不太正确。

最佳答案

您应该使用 in 关键字,如下所示:

for country in countries:
    if country.attributes['adm0_a3'] in ['USA', 'FRA', 'GBR', 'JPN']:
        ax.add_geometries(country.geometry, ccrs.PlateCarree(),
                          facecolor=(0, 0, 1),
                          label=country.attributes['adm0_a3'])
    else:
        ax.add_geometries(country.geometry, ccrs.PlateCarree(),
                          facecolor=('#c4e6ff'),
                          label=country.attributes['adm0_a3'])

这就是您要找的吗?

关于python - Cartopy-Python 语法 - 一行中多个对象/国家,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38224019/

相关文章:

Python_Pandas : Among duplicate columns, 选择具有最新日期的列,然后选择得分最高的列

python - 在 cartopy map 中绘制网格线

python - 如何在 Cartopy 投影中绘制圆的半径

python - 循环创建子图/Python

python - Cartopy:将点从轴坐标转换为纬度/经度坐标

python - 使用 k-Means 聚类算法预测值

python - 计算两个字符串之间距离的算法

Python:将属性添加到类的变量并使其在分配(描述符类)中存活

python - 忽略python元组的一部分

python - 使用 cartopy 绘制来自 netcdf 的数据并不是在 0 经度处绘制数据