Skip to main content

A simple plotting tool with sane default

Project description

A simple wrapper around some basic 2d matplotlib plotting which has some sane defaults. Developed mostly for personal use.


Motivation and use-cases:

  • Quickly set up multiple plot parameters (font sizes, text position, curve colors, x and y scales) without having to remember how to do that; provide some sane defaults

  • Have all this code in one place and not scattered around multiple jupyter notebooks

  • All of the above allows to quickly create plots of 2d dimensional data

Usage

Everything is done by the SanePlot class. The initialization parameters which control the plot are:

  • figsize=(14.0, 10.0) - the size of the plot

  • legendloc='upper right' - the legend location

  • legend_frame_color='#FFFFFF' - color of the legend background

  • fontfamily='fantasy', font='Calibri' - these two parameters control the font. I only set them to use Cyrillic characters

  • legend_size=26 - legend font size

  • tick_size=24 - tick label size

  • xy_label_size=32 - set the size of the X and Y axis labels

  • textsize=27 - set the text size

  • linewidth=5 - the width of the curves being plotted

  • markersize=5 - the size of the markers being plotted

  • xlim=None - either None or a tuple/list; if set, sets the X-limits of the plot

  • ylim=None - either None or a tuple/list; if set, sets the Y-limits of the plot

  • text=None - either None or a string; if set, will place text somewhere on the plot

  • text_x_rel=None - controls the relative X-position of the text (thus, a value of 0.5 will place the text in the middle of the plot with respect to the X-axis)

  • text_x_abs=None - controls the absolute X-position of the text. If text_x_rel is set, will not do anything

  • text_y_rel=None - controls the relative Y-position of the text (thus, a value of 0.5 will place the text in the middle of the plot with respect to the Y-axis)

  • text_y_abs=None - controls the absolute Y-position of the text. If text_x_rel is set, will not do anything

  • log_x_base=0 - if set to 0, the X axis is normal (linear). If different from 0, then the X axis is a log-axis with base equal to log_x_base

  • log_y_base=0 - if set to 0, the Y axis is normal (linear). If different from 0, then the X axis is a log-axis with base equal to log_y_base

  • x_label=None - the label for the X axis

  • y_label=None - the label for the Y axis

  • linechange='monochrome' - sets the line styles. Can be either monochrome, color or a list. If it is a list, curve number N on the plot will be plotted with a style set by the element number (N-1) % len(linechange) of the list. The list corresponding to 'monochrome': [‘k-’, ‘k–’, ‘ko’, ‘k^’, ‘k:’, ‘k*’] The list corresponding to 'color': [‘k’, ‘g’, ‘b’, ‘r’, ‘c’]

The methods are:

  • SanePlot.add_text(textsize=None) - adds text specified during the initialization. You can override the originally set textsize. Returns the Figure object.

  • SanePlot.plot(x, y, label=None, linewidth=None, markersize=None) - plots the curve specified by the (x,y) arrays. The label is set by the label parameter, and the originally set linewidth and markersize can be overridden. Returns the Figure object.

  • SanePlot.legend() - show the legend. Returns the Figure object.

  • SanePlot.show() - returns the Figure object.

Examples

This can be inserted into a Jupyter notebook with %matplotlib inline added and will show the resulting plots right there.:

import numpy as np
from saneplot import SanePlot

x = np.linspace(0, 30, 100)
y1 = np.sin(x) * 1000 + 4000
y2 = np.cos(x) * 1000 + 4000
y3 = x**2 * 1000

sp = SanePlot(x_label='x', y_label='y', text='(a)', text_x_abs=10, text_y_rel=0.5)

sp.plot(x, y1, '0')
sp.plot(x, y2+100, 'y2', linewidth=4)
sp.plot(x, y2+500, 'y2', linewidth=4)
sp.plot(x, y2+1000, 'y2', linewidth=3)
sp.plot(x, y2+2000, 'y2', linewidth=3)
sp.plot(x, y2+4000, 'y2', linewidth=4)
sp.plot(x, y2+8000, 'y2', linewidth=5)
sp.add_text(textsize=10)
sp.legend()

Version history

  • 0.1 (01 February 2017) - first working version of the package created

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

saneplot-0.1.0.tar.gz (4.2 kB view hashes)

Uploaded Source

Built Distribution

saneplot-0.1.0-py3-none-any.whl (5.3 kB view hashes)

Uploaded Python 3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page