Provides a custom plotting style for matplotlib and other libraries building on it like pandas or seaborn. The plotting style is set to aproximately the styles described in our wiki: https://wiki.cpi.imtek.uni-freiburg.de/ScientificWriting
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

543 lines
26 KiB

### CPI matplotlib plotting style
# the plotting styles are set to aproximately the styles described in
# https://wiki.cpi.imtek.uni-freiburg.de/ScientificWriting
# in the file `140109-scientific-writing-06-figures-and-figure-captions.pptx`
# usage with matplotlib / pyplot:
# > from matplotlib import pyplot
# > pyplot.style.use('./cpi.mplstyle')
# usage with other libraries based on matplotlib, like searborn:
# > from matplotlib import pyplot
# > import seaborn
# > pyplot.style.use('./cpi.mplstyle')
#
# be aware that the set* functions of seaborn (like set_theme) might
# mess with the matplotlib style.
#
# to use the seaborn.set_palette() function to change line colors seems
# to be fine
# to use this style as your default matplotlib style, have a look at
# https://matplotlib.org/stable/tutorials/introductory/customizing.html#customizing-with-matplotlibrc-files
axes.labelsize : 14 # fontsize of the x any y labels
axes.prop_cycle : cycler('color', ['1f77b4', 'ff7f0e', '2ca02c', 'd62728', '9467bd', '8c564b', 'e377c2', '7f7f7f', 'bcbd22', '17becf'])
figure.dpi : 200 # figure dots per inch
figure.facecolor : w # figure facecolor
figure.figsize : 7, 4 # figure size in inches
figure.titlesize : 18 # size of the figure title
image.cmap : Paired # gray jet etc...
legend.fancybox : False # if True, use a rounded box for the
legend.fontsize : 14 # fontsize of the legend labels
legend.frameon : False # whether or not to draw a frame around legend
lines.linewidth : 2.0 # line width in points
savefig.dpi : 200 # figure dots per inch
xtick.bottom : True # draw ticks on the bottom side
xtick.direction : in # direction: in, out, or inout
xtick.labelsize : 14 # fontsize of the tick labels
xtick.major.width : 1 # major tick width in points
xtick.minor.width : 1 # minor tick width in points
xtick.top : True # draw ticks on the top side
ytick.direction : in # direction: in, out, or inout
ytick.labelleft : True # show tick labels on the left side
ytick.labelright : False # show tick labels on the right side
ytick.labelsize : 14 # fontsize of the tick labels
ytick.left : True # draw ticks on the left side
ytick.major.width : 1 # major tick width in points
ytick.minor.width : 1 # minor tick width in points
ytick.right : True # draw ticks on the right side
### Following are the default matplotlib settings
### Custom styles are commented out
### Classic matplotlib plotting style as of v1.5
### LINES
# See http://matplotlib.org/api/artist_api.html#module-matplotlib.lines for more
# information on line properties.
#lines.linewidth : 1.0 # line width in points
lines.linestyle : - # solid line
lines.color : b # has no affect on plot(); see axes.prop_cycle
lines.marker : None # the default marker
lines.markerfacecolor : auto # the default markerfacecolor
lines.markeredgecolor : auto # the default markeredgecolor
lines.markeredgewidth : 0.5 # the line width around the marker symbol
lines.markersize : 6 # markersize, in points
lines.dash_joinstyle : round # miter|round|bevel
lines.dash_capstyle : butt # butt|round|projecting
lines.solid_joinstyle : round # miter|round|bevel
lines.solid_capstyle : projecting # butt|round|projecting
lines.antialiased : True # render lines in antialiased (no jaggies)
lines.dashed_pattern : 6, 6
lines.dashdot_pattern : 3, 5, 1, 5
lines.dotted_pattern : 1, 3
lines.scale_dashes: False
### Marker props
markers.fillstyle: full
### PATCHES
# Patches are graphical objects that fill 2D space, like polygons or
# circles. See
# http://matplotlib.org/api/artist_api.html#module-matplotlib.patches
# information on patch properties
patch.linewidth : 1.0 # edge width in points
patch.facecolor : b
patch.force_edgecolor : True
patch.edgecolor : k
patch.antialiased : True # render patches in antialiased (no jaggies)
hatch.color : k
hatch.linewidth : 1.0
hist.bins : 10
### FONT
#
# font properties used by text.Text. See
# http://matplotlib.org/api/font_manager_api.html for more
# information on font properties. The 6 font properties used for font
# matching are given below with their default values.
#
# The font.family property has five values: 'serif' (e.g., Times),
# 'sans-serif' (e.g., Helvetica), 'cursive' (e.g., Zapf-Chancery),
# 'fantasy' (e.g., Western), and 'monospace' (e.g., Courier). Each of
# these font families has a default list of font names in decreasing
# order of priority associated with them. When text.usetex is False,
# font.family may also be one or more concrete font names.
#
# The font.style property has three values: normal (or roman), italic
# or oblique. The oblique style will be used for italic, if it is not
# present.
#
# The font.variant property has two values: normal or small-caps. For
# TrueType fonts, which are scalable fonts, small-caps is equivalent
# to using a font size of 'smaller', or about 83% of the current font
# size.
#
# The font.weight property has effectively 13 values: normal, bold,
# bolder, lighter, 100, 200, 300, ..., 900. Normal is the same as
# 400, and bold is 700. bolder and lighter are relative values with
# respect to the current weight.
#
# The font.stretch property has 11 values: ultra-condensed,
# extra-condensed, condensed, semi-condensed, normal, semi-expanded,
# expanded, extra-expanded, ultra-expanded, wider, and narrower. This
# property is not currently implemented.
#
# The font.size property is the default font size for text, given in pts.
# 12pt is the standard value.
#
font.family : sans-serif
font.style : normal
font.variant : normal
font.weight : normal
font.stretch : normal
# note that font.size controls default text sizes. To configure
# special text sizes tick labels, axes, labels, title, etc, see the rc
# settings for axes and ticks. Special text sizes can be defined
# relative to font.size, using the following values: xx-small, x-small,
# small, medium, large, x-large, xx-large, larger, or smaller
font.size : 12.0
font.serif : DejaVu Serif, New Century Schoolbook, Century Schoolbook L, Utopia, ITC Bookman, Bookman, Nimbus Roman No9 L, Times New Roman, Times, Palatino, Charter, serif
font.sans-serif: DejaVu Sans, Lucida Grande, Verdana, Geneva, Lucid, Arial, Helvetica, Avant Garde, sans-serif
font.cursive : Apple Chancery, Textile, Zapf Chancery, Sand, Script MT, Felipa, cursive
font.fantasy : Comic Sans MS, Chicago, Charcoal, ImpactWestern, Humor Sans, fantasy
font.monospace : DejaVu Sans Mono, Andale Mono, Nimbus Mono L, Courier New, Courier, Fixed, Terminal, monospace
### TEXT
# text properties used by text.Text. See
# http://matplotlib.org/api/artist_api.html#module-matplotlib.text for more
# information on text properties
text.color : k
### LaTeX customizations. See http://www.scipy.org/Wiki/Cookbook/Matplotlib/UsingTex
text.usetex : False # use latex for all text handling. The following fonts
# are supported through the usual rc parameter settings:
# new century schoolbook, bookman, times, palatino,
# zapf chancery, charter, serif, sans-serif, helvetica,
# avant garde, courier, monospace, computer modern roman,
# computer modern sans serif, computer modern typewriter
# If another font is desired which can loaded using the
# LaTeX \usepackage command, please inquire at the
# matplotlib mailing list
text.latex.preamble : # IMPROPER USE OF THIS FEATURE WILL LEAD TO LATEX FAILURES
# AND IS THEREFORE UNSUPPORTED. PLEASE DO NOT ASK FOR HELP
# IF THIS FEATURE DOES NOT DO WHAT YOU EXPECT IT TO.
# preamble is a comma separated list of LaTeX statements
# that are included in the LaTeX document preamble.
# An example:
# text.latex.preamble : \usepackage{bm},\usepackage{euler}
# The following packages are always loaded with usetex, so
# beware of package collisions: color, geometry, graphicx,
# type1cm, textcomp. Adobe Postscript (PSSNFS) font packages
# may also be loaded, depending on your font settings
text.hinting : auto # May be one of the following:
# 'none': Perform no hinting
# 'auto': Use freetype's autohinter
# 'native': Use the hinting information in the
# font file, if available, and if your
# freetype library supports it
# 'either': Use the native hinting information,
# or the autohinter if none is available.
# For backward compatibility, this value may also be
# True === 'auto' or False === 'none'.
text.hinting_factor : 8 # Specifies the amount of softness for hinting in the
# horizontal direction. A value of 1 will hint to full
# pixels. A value of 2 will hint to half pixels etc.
text.antialiased : True # If True (default), the text will be antialiased.
# This only affects the Agg backend.
# The following settings allow you to select the fonts in math mode.
# They map from a TeX font name to a fontconfig font pattern.
# These settings are only used if mathtext.fontset is 'custom'.
# Note that this "custom" mode is unsupported and may go away in the
# future.
mathtext.cal : cursive
mathtext.rm : serif
mathtext.tt : monospace
mathtext.it : serif:italic
mathtext.bf : serif:bold
mathtext.sf : sans\-serif
mathtext.fontset : cm # Should be 'cm' (Computer Modern), 'stix',
# 'stixsans' or 'custom'
mathtext.fallback: cm # Select fallback font from ['cm' (Computer Modern), 'stix'
# 'stixsans'] when a symbol can not be found in one of the
# custom math fonts. Select 'None' to not perform fallback
# and replace the missing character by a dummy.
mathtext.default : it # The default font to use for math.
# Can be any of the LaTeX font names, including
# the special name "regular" for the same font
# used in regular text.
### AXES
# default face and edge color, default tick sizes,
# default fontsizes for ticklabels, and so on. See
# http://matplotlib.org/api/axes_api.html#module-matplotlib.axes
axes.facecolor : w # axes background color
axes.edgecolor : k # axes edge color
axes.linewidth : 1.0 # edge linewidth
axes.grid : False # display grid or not
axes.grid.which : major
axes.grid.axis : both
axes.titlesize : large # fontsize of the axes title
axes.titley : 1.0 # at the top, no autopositioning.
axes.titlepad : 5.0 # pad between axes and title in points
axes.titleweight : normal # font weight for axes title
#axes.labelsize : medium # fontsize of the x any y labels
axes.labelpad : 5.0 # space between label and axis
axes.labelweight : normal # weight of the x and y labels
axes.labelcolor : k
axes.axisbelow : False # whether axis gridlines and ticks are below
# the axes elements (lines, text, etc)
axes.formatter.limits : -7, 7 # use scientific notation if log10
# of the axis range is smaller than the
# first or larger than the second
axes.formatter.use_locale : False # When True, format tick labels
# according to the user's locale.
# For example, use ',' as a decimal
# separator in the fr_FR locale.
axes.formatter.use_mathtext : False # When True, use mathtext for scientific
# notation.
axes.formatter.useoffset : True # If True, the tick label formatter
# will default to labeling ticks relative
# to an offset when the data range is very
# small compared to the minimum absolute
# value of the data.
axes.formatter.offset_threshold : 2 # When useoffset is True, the offset
# will be used when it can remove
# at least this number of significant
# digits from tick labels.
axes.unicode_minus : True # use unicode for the minus symbol
# rather than hyphen. See
# http://en.wikipedia.org/wiki/Plus_and_minus_signs#Character_codes
#axes.prop_cycle : cycler('color', 'bgrcmyk')
# color cycle for plot lines
# as list of string colorspecs:
# single letter, long name, or
# web-style hex
axes.autolimit_mode : round_numbers
axes.xmargin : 0 # x margin. See `axes.Axes.margins`
axes.ymargin : 0 # y margin See `axes.Axes.margins`
axes.spines.bottom : True
axes.spines.left : True
axes.spines.right : True
axes.spines.top : True
polaraxes.grid : True # display grid on polar axes
axes3d.grid : True # display grid on 3d axes
date.autoformatter.year : %Y
date.autoformatter.month : %b %Y
date.autoformatter.day : %b %d %Y
date.autoformatter.hour : %H:%M:%S
date.autoformatter.minute : %H:%M:%S.%f
date.autoformatter.second : %H:%M:%S.%f
date.autoformatter.microsecond : %H:%M:%S.%f
### TICKS
# see http://matplotlib.org/api/axis_api.html#matplotlib.axis.Tick
#xtick.top : True # draw ticks on the top side
#xtick.bottom : True # draw ticks on the bottom side
xtick.major.size : 4 # major tick size in points
xtick.minor.size : 2 # minor tick size in points
xtick.minor.visible : False
#xtick.major.width : 0.5 # major tick width in points
#xtick.minor.width : 0.5 # minor tick width in points
xtick.major.pad : 4 # distance to major tick label in points
xtick.minor.pad : 4 # distance to the minor tick label in points
xtick.color : k # color of the tick labels
#xtick.labelsize : medium # fontsize of the tick labels
#xtick.direction : in # direction: in, out, or inout
xtick.major.top : True # draw x axis top major ticks
xtick.major.bottom : True # draw x axis bottom major ticks
xtick.minor.top : True # draw x axis top minor ticks
xtick.minor.bottom : True # draw x axis bottom minor ticks
xtick.alignment : center
#ytick.left : True # draw ticks on the left side
#ytick.right : True # draw ticks on the right side
ytick.major.size : 4 # major tick size in points
ytick.minor.size : 2 # minor tick size in points
ytick.minor.visible : False
#ytick.major.width : 0.5 # major tick width in points
#ytick.minor.width : 0.5 # minor tick width in points
ytick.major.pad : 4 # distance to major tick label in points
ytick.minor.pad : 4 # distance to the minor tick label in points
ytick.color : k # color of the tick labels
#ytick.labelsize : medium # fontsize of the tick labels
#ytick.direction : in # direction: in, out, or inout
ytick.major.left : True # draw y axis left major ticks
ytick.major.right : True # draw y axis right major ticks
ytick.minor.left : True # draw y axis left minor ticks
ytick.minor.right : True # draw y axis right minor ticks
ytick.alignment : center
### GRIDS
grid.color : k # grid color
grid.linestyle : : # dotted
grid.linewidth : 0.5 # in points
grid.alpha : 1.0 # transparency, between 0.0 and 1.0
### Legend
#legend.fancybox : False # if True, use a rounded box for the
# legend, else a rectangle
legend.loc : upper right
legend.numpoints : 2 # the number of points in the legend line
#legend.fontsize : large
legend.borderpad : 0.4 # border whitespace in fontsize units
legend.markerscale : 1.0 # the relative size of legend markers vs. original
# the following dimensions are in axes coords
legend.labelspacing : 0.5 # the vertical space between the legend entries in fraction of fontsize
legend.handlelength : 2. # the length of the legend lines in fraction of fontsize
legend.handleheight : 0.7 # the height of the legend handle in fraction of fontsize
legend.handletextpad : 0.8 # the space between the legend line and legend text in fraction of fontsize
legend.borderaxespad : 0.5 # the border between the axes and legend edge in fraction of fontsize
legend.columnspacing : 2. # the border between the axes and legend edge in fraction of fontsize
legend.shadow : False
#legend.frameon : True # whether or not to draw a frame around legend
legend.framealpha : None # opacity of legend frame
legend.scatterpoints : 3 # number of scatter points
legend.facecolor : inherit # legend background color (when 'inherit' uses axes.facecolor)
legend.edgecolor : inherit # legend edge color (when 'inherit' uses axes.edgecolor)
### FIGURE
# See http://matplotlib.org/api/figure_api.html#matplotlib.figure.Figure
#figure.titlesize : medium # size of the figure title
figure.titleweight : normal # weight of the figure title
#figure.figsize : 8, 6 # figure size in inches
#figure.dpi : 80 # figure dots per inch
#figure.facecolor : 0.75 # figure facecolor; 0.75 is scalar gray
figure.edgecolor : w # figure edgecolor
figure.autolayout : False # When True, automatically adjust subplot
# parameters to make the plot fit the figure
figure.frameon : True
# The figure subplot parameters. All dimensions are a fraction of the
# figure width or height
figure.subplot.left : 0.125 # the left side of the subplots of the figure
figure.subplot.right : 0.9 # the right side of the subplots of the figure
figure.subplot.bottom : 0.1 # the bottom of the subplots of the figure
figure.subplot.top : 0.9 # the top of the subplots of the figure
figure.subplot.wspace : 0.2 # the amount of width reserved for space between subplots,
# expressed as a fraction of the average axis width
figure.subplot.hspace : 0.2 # the amount of height reserved for space between subplots,
# expressed as a fraction of the average axis height
### IMAGES
image.aspect : equal # equal | auto | a number
image.interpolation : bilinear # see help(imshow) for options
#image.cmap : jet # gray | jet etc...
image.lut : 256 # the size of the colormap lookup table
image.origin : upper # lower | upper
image.resample : False
image.composite_image : True
### CONTOUR PLOTS
contour.negative_linestyle : dashed # dashed | solid
contour.corner_mask : True
# errorbar props
errorbar.capsize: 3
# scatter props
scatter.marker: o
### Boxplots
boxplot.bootstrap: None
boxplot.boxprops.color: b
boxplot.boxprops.linestyle: -
boxplot.boxprops.linewidth: 1.0
boxplot.capprops.color: k
boxplot.capprops.linestyle: -
boxplot.capprops.linewidth: 1.0
boxplot.flierprops.color: b
boxplot.flierprops.linestyle: none
boxplot.flierprops.linewidth: 1.0
boxplot.flierprops.marker: +
boxplot.flierprops.markeredgecolor: k
boxplot.flierprops.markerfacecolor: auto
boxplot.flierprops.markersize: 6.0
boxplot.meanline: False
boxplot.meanprops.color: r
boxplot.meanprops.linestyle: -
boxplot.meanprops.linewidth: 1.0
boxplot.medianprops.color: r
boxplot.meanprops.marker: s
boxplot.meanprops.markerfacecolor: r
boxplot.meanprops.markeredgecolor: k
boxplot.meanprops.markersize: 6.0
boxplot.medianprops.linestyle: -
boxplot.medianprops.linewidth: 1.0
boxplot.notch: False
boxplot.patchartist: False
boxplot.showbox: True
boxplot.showcaps: True
boxplot.showfliers: True
boxplot.showmeans: False
boxplot.vertical: True
boxplot.whiskerprops.color: b
boxplot.whiskerprops.linestyle: --
boxplot.whiskerprops.linewidth: 1.0
boxplot.whiskers: 1.5
### Agg rendering
### Warning: experimental, 2008/10/10
agg.path.chunksize : 0 # 0 to disable; values in the range
# 10000 to 100000 can improve speed slightly
# and prevent an Agg rendering failure
# when plotting very large data sets,
# especially if they are very gappy.
# It may cause minor artifacts, though.
# A value of 20000 is probably a good
# starting point.
### SAVING FIGURES
path.simplify : True # When True, simplify paths by removing "invisible"
# points to reduce file size and increase rendering
# speed
path.simplify_threshold : 0.1111111111111111
# The threshold of similarity below which
# vertices will be removed in the simplification
# process
path.snap : True # When True, rectilinear axis-aligned paths will be snapped to
# the nearest pixel when certain criteria are met. When False,
# paths will never be snapped.
path.sketch : None # May be none, or a 3-tuple of the form (scale, length,
# randomness).
# *scale* is the amplitude of the wiggle
# perpendicular to the line (in pixels). *length*
# is the length of the wiggle along the line (in
# pixels). *randomness* is the factor by which
# the length is randomly scaled.
# the default savefig params can be different from the display params
# e.g., you may want a higher resolution, or to make the figure
# background white
#savefig.dpi : 100 # figure dots per inch
savefig.facecolor : w # figure facecolor when saving
savefig.edgecolor : w # figure edgecolor when saving
savefig.format : png # png, ps, pdf, svg
savefig.bbox : standard # 'tight' or 'standard'.
# 'tight' is incompatible with pipe-based animation
# backends (e.g. 'ffmpeg') but will work with those
# based on temporary files (e.g. 'ffmpeg_file')
savefig.pad_inches : 0.1 # Padding to be used when bbox is set to 'tight'
savefig.transparent : False # setting that controls whether figures are saved with a
# transparent background by default
savefig.orientation : portrait
# ps backend params
ps.papersize : letter # auto, letter, legal, ledger, A0-A10, B0-B10
ps.useafm : False # use of afm fonts, results in small files
ps.usedistiller : False # can be: None, ghostscript or xpdf
# Experimental: may produce smaller files.
# xpdf intended for production of publication quality files,
# but requires ghostscript, xpdf and ps2eps
ps.distiller.res : 6000 # dpi
ps.fonttype : 3 # Output Type 3 (Type3) or Type 42 (TrueType)
# pdf backend params
pdf.compression : 6 # integer from 0 to 9
# 0 disables compression (good for debugging)
pdf.fonttype : 3 # Output Type 3 (Type3) or Type 42 (TrueType)
pdf.inheritcolor : False
pdf.use14corefonts : False
# pgf backend params
pgf.texsystem : xelatex
pgf.rcfonts : True
pgf.preamble :
# svg backend params
svg.image_inline : True # write raster image data directly into the svg file
svg.fonttype : path # How to handle SVG fonts:
# 'none': Assume fonts are installed on the machine where the SVG will be viewed.
# 'path': Embed characters as paths -- supported by most SVG renderers
# Event keys to interact with figures/plots via keyboard.
# Customize these settings according to your needs.
# Leave the field(s) empty if you don't need a key-map. (i.e., fullscreen : '')
keymap.fullscreen : f, ctrl+f # toggling
keymap.home : h, r, home # home or reset mnemonic
keymap.back : left, c, backspace # forward / backward keys to enable
keymap.forward : right, v # left handed quick navigation
keymap.pan : p # pan mnemonic
keymap.zoom : o # zoom mnemonic
keymap.save : s, ctrl+s # saving current figure
keymap.quit : ctrl+w, cmd+w # close the current figure
keymap.grid : g # switching on/off a grid in current axes
keymap.yscale : l # toggle scaling of y-axes ('log'/'linear')
keymap.xscale : k, L # toggle scaling of x-axes ('log'/'linear')
###ANIMATION settings
animation.writer : ffmpeg # MovieWriter 'backend' to use
animation.codec : mpeg4 # Codec to use for writing movie
animation.bitrate: -1 # Controls size/quality tradeoff for movie.
# -1 implies let utility auto-determine
animation.frame_format: png # Controls frame format used by temp files
animation.ffmpeg_path: ffmpeg # Path to ffmpeg binary. Without full path
# $PATH is searched
animation.ffmpeg_args: # Additional arguments to pass to ffmpeg
animation.convert_path: convert # Path to ImageMagick's convert binary.
# On Windows use the full path since convert
# is also the name of a system tool.
animation.convert_args:
animation.html: none
_internal.classic_mode: True