我正在遵循这个例子,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/