other:python:matplotlib_by_jyp
Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revisionNext revisionBoth sides next revision | ||
other:python:matplotlib_by_jyp [2020/02/11 12:00] – [Starting (and more) with matplotlib] jypeter | other:python:matplotlib_by_jyp [2020/03/31 16:26] – [Starting (and more) with matplotlib] Improved offline plot creation jypeter | ||
---|---|---|---|
Line 47: | Line 47: | ||
mid_plot = my_page.add_subplot(3, | mid_plot = my_page.add_subplot(3, | ||
bot_plot = my_page.add_subplot(3, | bot_plot = my_page.add_subplot(3, | ||
- | * creating an //array of plots// with '' | + | * creating an //array of plots// with '' |
top_plot = plot_array[0] | top_plot = plot_array[0] | ||
mid_plot = plot_array[1] | mid_plot = plot_array[1] | ||
bot_plot = plot_array[2]</ | bot_plot = plot_array[2]</ | ||
- | * it is **even more efficient** to create a //figure// and //axes// with a single line: | + | * it is **even more efficient** to create a // |
* one plot on one page: '' | * one plot on one page: '' | ||
* three plots on one A4 portrait page:\\ < | * three plots on one A4 portrait page:\\ < | ||
Line 59: | Line 59: | ||
mid_plot = plot_array[1] | mid_plot = plot_array[1] | ||
bot_plot = plot_array[2] | bot_plot = plot_array[2] | ||
+ | </ | ||
+ | * if you need to specify the same additional //keyword// parameters (that will be passed //behind the scene// to the '' | ||
+ | my_page, plot_array = plt.subplots(nrows=3, | ||
+ | | ||
+ | | ||
</ | </ | ||
* use [[https:// | * use [[https:// | ||
Line 99: | Line 104: | ||
- you can use **transparency** to partially show what is behind some markers or other objects. Many //artists// accept the '' | - you can use **transparency** to partially show what is behind some markers or other objects. Many //artists// accept the '' | ||
- sometimes the results of the python/ | - sometimes the results of the python/ | ||
- | - if your matplotlib is executed in a batch script, it will generate an error when trying to create ('' | + | - if your matplotlib is executed in a batch script, it will generate an error when trying to create ('' |
- | * Check how you can [[https:// | + | |
- the documentation may mention [[http:// | - the documentation may mention [[http:// | ||
- Read the [[https:// | - Read the [[https:// | ||
Line 182: | Line 186: | ||
===== Misc Matplotlib tricks ===== | ===== Misc Matplotlib tricks ===== | ||
- | * Specifying the background color of a plot (e.g. when plotting | + | ==== Creating a plot offline ==== |
- | * '' | + | |
- | | + | You may need to create a plot offline when your network connection is not good enough, you don't have an X server running to display the plot (possibly because the script is running on a cluster), etc... This is easily done with the following code: |
+ | |||
+ | < | ||
+ | offline_plot = True | ||
+ | |||
+ | import matplotlib as mpl | ||
+ | if offline_plot: | ||
+ | # Define the graphic back-end BEFORE importing pyplot | ||
+ | mpl.use(' | ||
+ | |||
+ | # Import the rest of the matplotlib based modules | ||
+ | import matplotlib.pyplot as plt | ||
+ | |||
+ | [ ...your actual code... ] | ||
+ | |||
+ | # Done at last! Save the result | ||
+ | my_page.savefig(out_name, | ||
+ | |||
+ | if not offline_plot: | ||
+ | # Enter the interactive mode to display the plot | ||
+ | plt.show()</ | ||
+ | |||
+ | Note: see also [[https:// | ||
+ | |||
+ | ==== Specifying the background color of a plot ==== | ||
+ | |||
+ | e.g. You need to plot a masked variable, but you don't want the masked areas to be white | ||
+ | |||
+ | < | ||
+ | plt.gca().patch.set_color(' | ||
+ | plt.contourf(d) | ||
+ | plt.show()</ | ||
+ | |||
+ | [[https:// | ||
other/python/matplotlib_by_jyp.txt · Last modified: 2023/10/26 10:39 by jypeter