Skip to main content
Join the official Python Developers Survey 2018 and win valuable prizes: Start the survey!

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


Release history Release notifications

This version
History Node

0.1.0

Download files

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

Filename, size & hash SHA256 hash help File type Python version Upload date
saneplot-0.1.0-py3-none-any.whl (5.3 kB) Copy SHA256 hash SHA256 Wheel py3 Feb 1, 2017
saneplot-0.1.0.tar.gz (4.2 kB) Copy SHA256 hash SHA256 Source None Feb 1, 2017

Supported by

Elastic Elastic Search Pingdom Pingdom Monitoring Google Google BigQuery Sentry Sentry Error logging AWS AWS Cloud computing DataDog DataDog Monitoring Fastly Fastly CDN SignalFx SignalFx Supporter DigiCert DigiCert EV certificate StatusPage StatusPage Status page