.. currentmodule:: eelbrain ******* Recipes ******* .. contents:: Contents :local: ^^^^^^^^^^^^^^^^^^^^^ Plots for Publication ^^^^^^^^^^^^^^^^^^^^^ Style ----- .. seealso:: * Example on :ref:`exa-customizing-plots` * Matplotlib page on `styles `_ In order to produce multiple plots with consistent style it is useful to set some :mod:`matplotlib` options globally. One way to do this is by updating :attr:`matplotlib.rcParams` at the beginning of a script/notebook, e.g.:: from matplotlib import pyplot FONT = 'Arial' FONT_SIZE = 8 LINEWIDTH = 0.5 pyplot.rcParams.update({ 'figure.dpi': 150, 'savefig.dpi': 300, 'savefig.transparent': True, # Font 'font.family': 'sans-serif', 'font.sans-serif': FONT, 'font.size': FONT_SIZE, 'axes.labelsize': FONT_SIZE, 'axes.titlesize': FONT_SIZE, 'xtick.labelsize': FONT_SIZE, 'ytick.labelsize': FONT_SIZE, 'legend.fontsize': FONT_SIZE, # line width 'axes.linewidth': LINEWIDTH, 'grid.linewidth': LINEWIDTH, 'lines.linewidth': LINEWIDTH, 'patch.linewidth': LINEWIDTH, 'xtick.major.width': LINEWIDTH, 'xtick.minor.width': LINEWIDTH, 'ytick.major.width': LINEWIDTH, 'ytick.minor.width': LINEWIDTH, }) Plot sizes ---------- Matplotlib's :func:`~matplotlib.pyplot.tight_layout` functionality provides an easy way for plots to fill the available space, and most Eelbrain plots use it by default. However, when trying to generate multiple figures with identical scaling it can lead to unwanted differences between figures. For a consistent layout, set the font size through ``rcParams``, and then control the size of plots and figures using the corresponding parameters (``w, h, axw, axh``). Subplot placement can also be specified in absolute scale through the ``margins`` parameter (see :ref:`general-layout-parameters`). Various ------- If a script produces several plots and there is no need to show them on the screen, they can be kept hidden through the ``show=False`` argument:: p = plot.UTSStat('uts', 'A', data=data, w=5, tight=False, show=False) When working on more complex figures, it is often desirable to save the legend separately and combine it in a layout application:: p = plot.UTSStat('uts', 'A', data=data, w=5, tight=False, show=False, legend=False) p.save('plot.pdf', facecolor="none") p.save_legend('legend.pdf', facecolor="none")