This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision Next revision Both sides next revision | ||
other:python:maps_by_jyp [2019/09/12 15:56] jypeter Started adding the megabiomes example |
other:python:maps_by_jyp [2019/11/15 12:53] jypeter [JYP's map room] Added some links |
||
---|---|---|---|
Line 1: | Line 1: | ||
====== JYP's map room ====== | ====== JYP's map room ====== | ||
- | You will find below a gallery of maps made with [[https://scitools.org.uk/cartopy/|cartopy]]. | + | You will find below a gallery of maps made with [[other:python:matplotlib_by_jyp|matplotlib]] and [[https://scitools.org.uk/cartopy/|cartopy]]. |
+ | |||
+ | You can get more python information on the [[other:python:jyp_steps|JYP's recommended steps for learning python]] page. | ||
This page is under construction and its content may change drastically. The source codes are on LSCE servers, that you can hopefully access (too bad otherwise...) | This page is under construction and its content may change drastically. The source codes are on LSCE servers, that you can hopefully access (too bad otherwise...) | ||
Line 16: | Line 18: | ||
* Optionally reduce the number of PFTs before plotting | * Optionally reduce the number of PFTs before plotting | ||
* Use ''matplotlib''+''cartopy'' to create the plot | * Use ''matplotlib''+''cartopy'' to create the plot | ||
- | * Create two plots with a common colorbar | + | * Create two plots with a //PlateCarree// projection and a common colorbar |
- | * Use a listed colormap (and the associated norm), and pcolormesh to plot the discrete PFT values | + | * Use an //A4 portrait// (''figsize=(8.3, 11.7)'') figure size and ''subplots_adjust'' in order to improve the page layout |
+ | * Use a //listed colormap// (and the associated //norm//), and ''pcolormesh'' to plot the discrete PFT values | ||
+ | * Use a trick to make sure that the black plot border is correctly plotted above everything (''top_plot.outline_patch.set_zorder(50)'') | ||
===== Megabiome maps ===== | ===== Megabiome maps ===== | ||
* Summary: Plot two megabiome maps based on 2 versions of the IPSL model (CM5 and CM6), and compare them to a map with observations | * Summary: Plot two megabiome maps based on 2 versions of the IPSL model (CM5 and CM6), and compare them to a map with observations | ||
- | * Authors: Raj Rani-Singh & Jean-Yves Peterschmitt | + | * Authors: Raj Rani & Jean-Yves Peterschmitt |
* Date: September 2019 | * Date: September 2019 | ||
* Script: ''~jypeter/CDAT/Progs/Devel/pasb/PMIP4/Press_Conference_1909/mh_CM6_CM5_megabiome.py | * Script: ''~jypeter/CDAT/Progs/Devel/pasb/PMIP4/Press_Conference_1909/mh_CM6_CM5_megabiome.py | ||
'' | '' | ||
- | + | {{:other:python:mh_cm6_cm5_megabiome.png?direct&300 |}} | |
- | * Load the NetCDF model data with ''cdms2'', and the xlsx observations' data with ''pandas'' | + | * Load the NetCDF model data with ''cdms2'', and the csv observations' data with ''pandas'' |
+ | * Use ''matplotlib''+''cartopy'' to create the plot | ||
+ | * Create three plots on a 2x2 layout with an //Orthographic// projection (centered on Europe) and a common colorbar. Explicitly make the 4th plot //invisible// in order to make space for plotting the colorbar (''colorbar_plot.background_patch.set_visible(False)'' and ''colorbar_plot.outline_patch.set_visible(False)'') | ||
+ | * Use a square (''figsize=(8, 8)'') figure size in order to improve the page layout | ||
+ | * Use the same color scale for both the model data (plotted with ''pcolormesh'') and the observation data (plotted with ''scatter'') | ||
+ | * Use a //dictionary trick// for easily using the same gridlines parameters for all the maps | ||
+ | * Use a common //listed colormap// to plot the discrete megabiome values (with a //norm// associated with the megabiome values) and the observations (with a **different //norm//** associated with the observations) | ||
+ | * The three plots have the same colormap, but we create a standalone colormap (created with ''mpl.colorbar.ColorbarBase'') in the Bottom Left quadrant. We use ''UR_plot.get_position().bounds'' to determine the exact location of the Upper Right and Lower Left plots, and combine the coordinates to create the axis (with ''my_page.add_axes'') where the colorbar will be plotted | ||
/* standard page footer */ | /* standard page footer */ |