User Tools

Site Tools


other:python:matplotlib_by_jyp

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
other:python:matplotlib_by_jyp [2021/10/26 09:33]
jypeter Added the contourf+hatches section
other:python:matplotlib_by_jyp [2023/10/26 08:39] (current)
jypeter [Useful matplotlib reference pages]
Line 1: Line 1:
 ====== Working with matplotlib (JYP version) ====== ====== Working with matplotlib (JYP version) ======
 +
 +<note tip>​Note:​ [[https://​matplotlib.org/​cheatsheets/​|Matplotlib cheatsheets]] ([[https://​github.com/​matplotlib/​cheatsheets#​cheatsheets-for-matplotlib-users|pdf version]])</​note>​
  
 **Summary**:​ there are lots of python libraries that you can use for plotting, but Matplotlib has become a //de facto// standard **Summary**:​ there are lots of python libraries that you can use for plotting, but Matplotlib has become a //de facto// standard
Line 32: Line 34:
         * if you need several display windows at the same time, create several figures!\\ <​code>​win_1 = plt.figure()         * if you need several display windows at the same time, create several figures!\\ <​code>​win_1 = plt.figure()
 win_2 = plt.figure()</​code>​ win_2 = plt.figure()</​code>​
-        * the [[http://​matplotlib.org/​faq/usage_faq.html#​parts-of-a-figure|parts of a figure]] are usually positioned in //​normalized coordinates//:​ ''​(0,​ 0)''​ is the bottom left of the figure, and ''​(1,​ 1)''​ is the top right+        * the [[https://​matplotlib.org/​stable/gallery/​showcase/​anatomy.html|parts of a figure]] are usually positioned in //​normalized coordinates//:​ ''​(0,​ 0)''​ is the bottom left of the figure, and ''​(1,​ 1)''​ is the top right
         * You don't really specify the **page orientation** (//​portrait//​ or //​landscape//​) of a plot. If you want a portrait plot, it's up to you to create a plot that will look higher than it is large. The idea is not to worry about this and just check the final resulting plot: create a plot, save it, display the resulting png/pdf and then adjust the creation script         * You don't really specify the **page orientation** (//​portrait//​ or //​landscape//​) of a plot. If you want a portrait plot, it's up to you to create a plot that will look higher than it is large. The idea is not to worry about this and just check the final resulting plot: create a plot, save it, display the resulting png/pdf and then adjust the creation script
           * If you do have an idea of the layout of what you want to plot, it may be easier to explicitly specify the figure size/ratio at creation time, and then try to //fill// the normalized coordinates space of the figure           * If you do have an idea of the layout of what you want to plot, it may be easier to explicitly specify the figure size/ratio at creation time, and then try to //fill// the normalized coordinates space of the figure
Line 39: Line 41:
             * The specified ''​width''​ and ''​height''​ are supposed to be in inches (1 inch = 2.54 cm)             * The specified ''​width''​ and ''​height''​ are supposed to be in inches (1 inch = 2.54 cm)
             * ''​my_page = plt.figure(figsize=(8.3,​ 11.7))'':​ create a figure that will theoretically fill an A4 size page in portrait mode (check [[https://​www.papersizes.org/​a-paper-sizes.htm|Dimensions Of A Series Paper Sizes]] if you need more details about standard paper sizes)             * ''​my_page = plt.figure(figsize=(8.3,​ 11.7))'':​ create a figure that will theoretically fill an A4 size page in portrait mode (check [[https://​www.papersizes.org/​a-paper-sizes.htm|Dimensions Of A Series Paper Sizes]] if you need more details about standard paper sizes)
-      * a Matplotlib **//Axis//** is a **plot** inside a Figure... [[http://​matplotlib.org/​faq/usage_faq.html#​parts-of-a-figure|More details]]+      * a Matplotlib **//Axes//** (not to be confused with an //​**axis**//​) ​is a **(sub-)plot** inside a Figure... [[https://​matplotlib.org/​stable/api/​axes_api.html|(much) ​More details]]
         * reserve space for **one plot** that will use most of the available area of the figure/​page:​         * reserve space for **one plot** that will use most of the available area of the figure/​page:​
           * ''​my_plot = my_page.add_subplot(1,​ 1, 1)''​ or ''​my_plot = my_page.subplot**s**()''​           * ''​my_plot = my_page.add_subplot(1,​ 1, 1)''​ or ''​my_plot = my_page.subplot**s**()''​
Line 116: Line 118:
     * The ''​plot''​ function will be faster for scatterplots where markers don't vary in size or color     * The ''​plot''​ function will be faster for scatterplots where markers don't vary in size or color
     * [[https://​matplotlib.org/​api/​_as_gen/​matplotlib.axes.Axes.contourf.html|contour(...) and contourf(...)]]:​ draw contour lines and filled contours     * [[https://​matplotlib.org/​api/​_as_gen/​matplotlib.axes.Axes.contourf.html|contour(...) and contourf(...)]]:​ draw contour lines and filled contours
-  * **X and Y axes parameters** (see also [[https://​matplotlib.org/​examples/​showcase/​anatomy.html|Anatomy of a figure]]):+  * **X and Y axes parameters** (see also [[https://​matplotlib.org/​stable/​gallery/​showcase/​anatomy.html|Anatomy of a figure]]):
     * **Axis range**: ''​my_plot.set_xlim(x_leftmost_value,​ x_rightmost_value)''​     * **Axis range**: ''​my_plot.set_xlim(x_leftmost_value,​ x_rightmost_value)''​
       * Use the leftmost and rightmost values to specify the orientation of the axis (i.e the rightmost value can be smaller than the leftmost)       * Use the leftmost and rightmost values to specify the orientation of the axis (i.e the rightmost value can be smaller than the leftmost)
Line 183: Line 185:
       * ''​my_cmap.set_over(color='​k'​)'':​ color to be used for //high out-of-range values// **if** ''​extend''​ is specified and is //'​both'//​ or  //'​max'//​. Default color is ''​my_cmap(my_cmap.N - 1)''​       * ''​my_cmap.set_over(color='​k'​)'':​ color to be used for //high out-of-range values// **if** ''​extend''​ is specified and is //'​both'//​ or  //'​max'//​. Default color is ''​my_cmap(my_cmap.N - 1)''​
       * ''​my_cmap.set_under(color='​k'​)'':​ color to be used for //low out-of-range values// **if** ''​extend''​ is specified and is //'​both'//​ or  //'​min'//​. Default color is ''​my_cmap(0)''​       * ''​my_cmap.set_under(color='​k'​)'':​ color to be used for //low out-of-range values// **if** ''​extend''​ is specified and is //'​both'//​ or  //'​min'//​. Default color is ''​my_cmap(0)''​
-  * [[https://​matplotlib.org/​api/_as_gen/matplotlib.figure.Figure.html#​matplotlib.figure.Figure.colorbar|colorbar]]+  * [[https://​matplotlib.org/​stable/api/figure_api.html#​matplotlib.figure.Figure.colorbar|colorbar]] ​(see also the [[https://​matplotlib.org/​stable/​api/​colorbar_api.html|colorbar api]])
     * [[https://​matplotlib.org/​stable/​gallery/​subplots_axes_and_figures/​colorbar_placement.html|Placing colorbars demo]]     * [[https://​matplotlib.org/​stable/​gallery/​subplots_axes_and_figures/​colorbar_placement.html|Placing colorbars demo]]
     * [[https://​matplotlib.org/​stable/​gallery/​images_contours_and_fields/​contourf_demo.html|contourf + colorbar demo]]     * [[https://​matplotlib.org/​stable/​gallery/​images_contours_and_fields/​contourf_demo.html|contourf + colorbar demo]]
 +    * Changing the font size of a colorbar (i.e. //changing [[https://​matplotlib.org/​stable/​api/​axes_api.html#​ticks-and-tick-labels|ticks and tick labels]]//​):​
 +      * This can be done by manipulating the properties of the //Axes// where the colorbar is plotted\\ e.g. change the tick labels font size with\\ ''​cb.ax.tick_params(labelsize='​xx-large'​)''​ (where ''​cb''​ is a //​colorbar//​ object)
   * [[https://​matplotlib.org/​api/​_as_gen/​matplotlib.pyplot.text.html|text(...)]] and [[https://​matplotlib.org/​tutorials/​text/​annotations.html|annotations]]   * [[https://​matplotlib.org/​api/​_as_gen/​matplotlib.pyplot.text.html|text(...)]] and [[https://​matplotlib.org/​tutorials/​text/​annotations.html|annotations]]
     * Some titles:     * Some titles:
other/python/matplotlib_by_jyp.1635240800.txt.gz · Last modified: 2021/10/26 09:33 by jypeter