Skip to content

Commit

Permalink
Merge pull request #2340 from rcomer/fa-cm
Browse files Browse the repository at this point in the history
DOC: add example showing FeatureArtist is a ScalarMappable
  • Loading branch information
rcomer committed Mar 7, 2024
2 parents ebae1d0 + 0d2cd38 commit 0fd1de7
Showing 1 changed file with 48 additions and 0 deletions.
48 changes: 48 additions & 0 deletions examples/scalar_data/geometry_data.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
"""
Associating data with geometries
--------------------------------
This example shows how to colour geometries based on a data array. This
functionality is available since Cartopy 0.23.
"""
import matplotlib.colors as mcolors
import matplotlib.pyplot as plt

import cartopy.crs as ccrs
import cartopy.io.shapereader as shpreader


def main():
# Load Natural Earth's country shapefiles.
shpfilename = shpreader.natural_earth(resolution='110m',
category='cultural',
name='admin_0_countries')
reader = shpreader.Reader(shpfilename)
countries = reader.records()

# Get hold of the geometry and population estimate from each country's record.
geometries = []
population_estimates = []

for country in countries:
geometries.append(country.geometry)
population_estimates.append(country.attributes['POP_EST'])

# Set up a figure and an axes with the Eckert VI projection.
fig = plt.figure()
ax = fig.add_subplot(projection=ccrs.EckertVI())

# Plot the geometries coloured according to population estimate.
art = ax.add_geometries(geometries, crs=ccrs.PlateCarree(),
array=population_estimates, cmap='YlGnBu',
norm=mcolors.LogNorm(vmin=1e6))
cbar = fig.colorbar(art, orientation='horizontal', extend='min')
cbar.set_label('Number of people')
fig.suptitle('Country Population Estimates', fontsize='x-large')

plt.show()


if __name__ == '__main__':
main()

0 comments on commit 0fd1de7

Please sign in to comment.