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:jyp_steps [2019/03/18 13:53] jypeter [Quick Reference] |
other:python:jyp_steps [2019/05/24 15:23] jypeter [Matplotlib] |
||
---|---|---|---|
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.figure.Figure.html#matplotlib.figure.Figure.add_subplot|fig.add_subplot(...)]] | ||
+ | * [[https://matplotlib.org/api/_as_gen/matplotlib.figure.Figure.html#matplotlib.figure.Figure.add_axes|fig.add_axes(...)]] | ||
+ | * [[https://matplotlib.org/api/_as_gen/matplotlib.pyplot.subplot.html|plt.subplot(...)]] | ||
+ | * [[https://matplotlib.org/api/_as_gen/matplotlib.pyplot.subplots.html|plt.subplots(...)]] with an **s** at the end ([[https://matplotlib.org/gallery/subplots_axes_and_figures/subplots_demo.html|demo]]) | ||
+ | * [[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 202: | Line 207: | ||
- the documentation may mention [[http://matplotlib.org/faq/usage_faq.html#what-is-a-backend|backends]]. What?? Basically, you use python commands to create a plot, and the backend is the //thing// that will render your plot on the screen or in a file (png, pdf, etc...) | - the documentation may mention [[http://matplotlib.org/faq/usage_faq.html#what-is-a-backend|backends]]. What?? Basically, you use python commands to create a plot, and the backend is the //thing// that will render your plot on the screen or in a file (png, pdf, etc...) | ||
- if you don't see a part of what you have plotted, maybe it's hidden behind other elements! Use the [[https://matplotlib.org/examples/pylab_examples/zorder_demo.html|zorder parameter]] to explicitly specify the plotting order/layers | - if you don't see a part of what you have plotted, maybe it's hidden behind other elements! Use the [[https://matplotlib.org/examples/pylab_examples/zorder_demo.html|zorder parameter]] to explicitly specify the plotting order/layers | ||
+ | * things should work //as expected// if //zorder// is not explicitly specified | ||
+ | * Use the ''zorder=NN'' parameter when creating objects. ''NN'' is an integer where 0 is the lowest value (the farthest from the eye), and objects are plotted above objects with a lower //zorder// value | ||
+ | * Use ''matplotlib_object.set_order(NN)'' to change the order after an object has been created | ||
- Read the [[http://www.labri.fr/perso/nrougier/teaching/matplotlib/|Matplotlib tutorial by Nicolas Rougier]] | - Read the [[http://www.labri.fr/perso/nrougier/teaching/matplotlib/|Matplotlib tutorial by Nicolas Rougier]] | ||
- Download the [[http://matplotlib.org/contents.html|pdf version of the manual]]. **Do not print** the 2800+ pages of the manual! Read the beginner's guide (Chapter //FIVE// of //Part II//) and have a super quick look at the table of contents of the whole document. | - Download the [[http://matplotlib.org/contents.html|pdf version of the manual]]. **Do not print** the 2800+ pages of the manual! Read the beginner's guide (Chapter //FIVE// of //Part II//) and have a super quick look at the table of contents of the whole document. | ||
+ | |||
+ | ==== 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.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 | ||
+ | * [[https://matplotlib.org/api/_as_gen/matplotlib.lines.Line2D.html|line]] parameters | ||
+ | * ''linestyle'': ''solid'', ''None'', [[https://matplotlib.org/api/_as_gen/matplotlib.lines.Line2D.html#matplotlib.lines.Line2D.set_linestyle|other]] ([[https://matplotlib.org/examples/lines_bars_and_markers/line_styles_reference.html|default styles example]], [[https://matplotlib.org/examples/lines_bars_and_markers/linestyles.html|custom styles example]]) | ||
+ | * [[https://matplotlib.org/api/markers_api.html|marker types]] | ||
+ | * ''fillstyle'': ''full'', ''None'', [[https://matplotlib.org/gallery/lines_bars_and_markers/marker_fillstyle_reference.html|other]] | ||
+ | * Other attributes: ''markersize'', ''markerfacecolor'' (and ''markerfacecoloralt'' for dual color markers), ''markeredgecolor'', ''markeredgewidth'' | ||
+ | * [[https://matplotlib.org/api/colors_api.html|colors]] | ||
+ | * [[https://matplotlib.org/gallery/color/color_demo.html|color demo]] | ||
+ | * [[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 214: | Line 245: | ||
* [[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| | ||
Line 332: | Line 364: | ||
* Python 3 [[https://perso.limsi.fr/pointal/python:abrege|Quick reference]] and [[https://perso.limsi.fr/pointal/python:memento|Cheat sheet]] | * Python 3 [[https://perso.limsi.fr/pointal/python:abrege|Quick reference]] and [[https://perso.limsi.fr/pointal/python:memento|Cheat sheet]] | ||
- | * [[https://www.datacamp.com/community/blog/jupyter-notebook-cheat-sheet|Jupyter Notebook Cheat Sheet]] | + | * [[https://www.cheatography.com/weidadeyue/cheat-sheets/jupyter-notebook/pdf_bw/|Jupyter Notebook Keyboard Shortcuts]] |
===== Misc tutorials ===== | ===== Misc tutorials ===== | ||
Line 373: | Line 405: | ||
* [[https://www.datacamp.com/community/tutorials/data-science-python-ide|Top 5 Python IDEs For Data Science]] | * [[https://www.datacamp.com/community/tutorials/data-science-python-ide|Top 5 Python IDEs For Data Science]] | ||
* [[http://noeticforce.com/best-python-ide-for-programmers-windows-and-mac|Python IDE: The10 Best IDEs for Python Programmers]] | * [[http://noeticforce.com/best-python-ide-for-programmers-windows-and-mac|Python IDE: The10 Best IDEs for Python Programmers]] | ||
+ | * [[https://www.techbeamers.com/best-python-ide-python-programming/|Get the Best Python IDE]] | ||
* [[https://wiki.python.org/moin/IntegratedDevelopmentEnvironments]] | * [[https://wiki.python.org/moin/IntegratedDevelopmentEnvironments]] | ||