User Tools

Site Tools


other:python:jyp_steps

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
Next revision Both sides next revision
other:python:jyp_steps [2019/05/23 13:10]
jypeter [Using a Python IDE] Added another IDE comparison page
other:python:jyp_steps [2019/05/23 14:54]
jypeter [Matplotlib] Added ref to subplot_adjust
Line 187: Line 187:
     - some resources for having multiple plots on the same figure     - some resources for having multiple plots on the same figure
       * [[https://​matplotlib.org/​gallery/​recipes/​create_subplots.html#​sphx-glr-gallery-recipes-create-subplots-py|Easily creating subplots]]       * [[https://​matplotlib.org/​gallery/​recipes/​create_subplots.html#​sphx-glr-gallery-recipes-create-subplots-py|Easily creating subplots]]
 +        * [[https://​matplotlib.org/​api/​_as_gen/​matplotlib.pyplot.subplots_adjust.html|subplots_adjust]] can be used to change the boundaries
       * [[https://​matplotlib.org/​gallery/​index.html#​subplots-axes-and-figures|Subplots,​ axes and figures]] gallery       * [[https://​matplotlib.org/​gallery/​index.html#​subplots-axes-and-figures|Subplots,​ axes and figures]] gallery
       * [[https://​matplotlib.org/​tutorials/​intermediate/​gridspec.html#​sphx-glr-tutorials-intermediate-gridspec-py|Customizing Figure Layouts Using GridSpec and Other Functions]],​ [[https://​matplotlib.org/​tutorials/​intermediate/​constrainedlayout_guide.html|constrained layout]] and [[https://​matplotlib.org/​tutorials/​intermediate/​tight_layout_guide.html|tight layout]]       * [[https://​matplotlib.org/​tutorials/​intermediate/​gridspec.html#​sphx-glr-tutorials-intermediate-gridspec-py|Customizing Figure Layouts Using GridSpec and Other Functions]],​ [[https://​matplotlib.org/​tutorials/​intermediate/​constrainedlayout_guide.html|constrained layout]] and [[https://​matplotlib.org/​tutorials/​intermediate/​tight_layout_guide.html|tight layout]]
Line 207: Line 208:
 ==== Useful reference pages ==== ==== Useful reference pages ====
  
-  * [[https://​matplotlib.org/​api/​_as_gen/​matplotlib.pyplot.plot.html|plot()]]:​ Plot y versus x as lines and/or markers +  * [[https://​matplotlib.org/​api/​_as_gen/​matplotlib.pyplot.plot.html|plot(...)]]: Plot y versus x as lines and/or markers 
-  * [[https://​matplotlib.org/​api/​_as_gen/​matplotlib.pyplot.scatter.html|scatter()]]:​ A scatter plot of y vs x with varying marker size and/or color+  * [[https://​matplotlib.org/​api/​_as_gen/​matplotlib.pyplot.scatter.html|scatter(...)]]: A scatter plot of y vs x with varying marker size and/or color
     * 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.lines.Line2D.html|line]] parameters   * [[https://​matplotlib.org/​api/​_as_gen/​matplotlib.lines.Line2D.html|line]] parameters
Line 218: Line 219:
     * [[https://​matplotlib.org/​gallery/​color/​color_demo.html|color demo]]     * [[https://​matplotlib.org/​gallery/​color/​color_demo.html|color demo]]
     * [[https://​matplotlib.org/​examples/​color/​named_colors.html|named colors]]     * [[https://​matplotlib.org/​examples/​color/​named_colors.html|named colors]]
 +  * [[https://​matplotlib.org/​api/​pyplot_api.html#​matplotlib.pyplot.legend|legend(...)]] ([[https://​matplotlib.org/​examples/​pylab_examples/​legend_demo3.html|legend demo]])
 +    * The legend will //show// the lines (or other objects) that were associated with a //label// with the ''​label=''​ keyword when creating/​updating a plot
 +      * If there are some elements of a plot that you do not want to associate with a legend (e.g. there are several lines with the same color and markers, but you want to plot the legend only once), do not specify a ''​label=''​ keyword for these elements, or add a ''​_''​ at the front of the label strings
 +    * The legend is positioned somewhere (that can be specified) **inside** the plot. In order to place a legend **outside** the plot, use the ''​bbox_to_anchor''​ parameter
 +      * the parameters of ''​bbox_to_anchor''​ are in normalized coordinates of the current (sub)plot:
 +        * ''​(0,​ 0)''​ is the lower left corner of the plot, and ''​(1,​ 1)''​ the upper right corner
 +        * ''​legend(... bbox_to_anchor=(1.05,​ 1.), loc='​upper left', ...)''​ will put the upper left corner of the legend slightly right (''​(1.05,​ 1.)''​) of the upper right corner (''​(1,​ 1)''​) of the plot
 +      * if the legend is outside of the plot, you have to **explicitly provide enough space for the legend on the page**
 +        * e.g. with [[https://​matplotlib.org/​api/​_as_gen/​matplotlib.pyplot.subplots_adjust.html|subplots_adjust]],​ ''​plt.subplots_adjust(right=0.75)''​ will make all the plots use 75% on the left of the page, and leave 25% on the right for the legend
  
 ==== Misc Matplotlib tricks ==== ==== Misc Matplotlib tricks ====
Line 228: Line 238:
  
   * [[http://​journals.plos.org/​ploscompbiol/​article?​id=10.1371/​journal.pcbi.1003833|Ten Simple Rules for Better Figures]]   * [[http://​journals.plos.org/​ploscompbiol/​article?​id=10.1371/​journal.pcbi.1003833|Ten Simple Rules for Better Figures]]
 +  * [[https://​www.machinelearningplus.com/​plots/​top-50-matplotlib-visualizations-the-master-plots-python/​|Top 50 matplotlib Visualizations]]
   * [[http://​seaborn.pydata.org/​|Seaborn]] is a library for making attractive and informative statistical graphics in Python, built on top of matplotlib   * [[http://​seaborn.pydata.org/​|Seaborn]] is a library for making attractive and informative statistical graphics in Python, built on top of matplotlib
     * See also: [[https://​www.datacamp.com/​community/​tutorials/​seaborn-python-tutorial|     * See also: [[https://​www.datacamp.com/​community/​tutorials/​seaborn-python-tutorial|
other/python/jyp_steps.txt · Last modified: 2024/03/07 10:15 by jypeter