Skip to content

Educational library to directly plot single data points.

License

Notifications You must be signed in to change notification settings

GeorgBraun/python-directplot

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

11 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

python-directplot

Educational library to directly plot single data points.

Description

Educational library to directly plot single data points.

ATTENTION: This library is slow and not suited for production use!

It has been developed for educational purpose, especially to visualize numerical algorithms e.g. for simulation or plotting measurement data.

It wraps matplotlib and pyplot commands in even simpler commands:

import math
import directplot as dp

dp.init()

for i in range(51):
    x = i*2*math.pi/50
    y = math.sin(x)
    dp.add(0, x, y)

dp.waitforclose()

The following functions are provided:

  • init() Initializes and opens a Direct Plot window
  • add() Adds a single point to a plot line
  • showMarker() Shows or hides marker points on a plot line or on all plot lines
  • label() Changes the label of a plot line used in the legend
  • title() Changes the title of a sub-plot
  • xylabel() Changes the axis lables of a sub-plot
  • refresh() Refreshes the contents of the plot window
  • close() Closes the Direct Plot window
  • clear() Deletes the contents of the plot window
  • waitforclose() Updates the title on the plot window and blocks execution until user closes the plot window.

API

Functions are listed alphabetical order. Unless otherwise noted, the return type is None.

add()

Adds a single point to a plot line.

If the number of points per plot line exceeds maxPoints (see init()), the oldest point is removed automatically, resulting in a scroll behavior of the plots.

add(id, x, y, refresh=True)

Parameter:

  • id (int) – The id of the target plot line
  • x (float) – x value
  • y (float) – y value
  • refresh (bool) – Determines if the plot is refreshed immediately resulting in slower plotting speed. Optional with default True

Example

dp.add(0, 0.1, 2.7)
dp.add(1, 1.1, 7.3, False)
dp.add(1, 1.2, 7.2)

clear()

Deletes the contents of the plot window.

Keeps the number of sub-plots, the number of lines per sub-plot and the titles of the sub-plots. Everything else is reset/deleted.

clear()

Example

dp.clear()

close()

Closes the Single Point Plot window.

close()

Example

dp.close()

init()

Initializes and opens a Single Point Plot window.

init(titles=['Single-Point-Plot'], linesPerSubplot=4, showMarker=True, maxPoints=10000, grid: bool = True)

Parameter

  • titles (list(str)) – A list or tuple containing 1 to 3 strings, resulting in 1 to 3 sub-plots on the plot window. Optional with a default title for a single sub-plot.
  • linesPerSubplot (int) – Number of lines (data series) per sub-plot. Optional with default 4
  • showMarker (bool) – Determines if data points are emphasized with a little dot. Optional with default True
  • maxPoints (int) - Maximum number of data points per line (data series). Optional with default 10000
    If the number of points per plot line exceeds maxPoints, the oldest point is removed automatically, resulting in a scroll behavior of the plots.
  • grid (bool): Display plot grid. Optional with default True

Example

dp.init()

or

dp.init(["Results"])

or

dp.init(["Height", "Speed", "Forces"], linesPerSubplot=2, showMarker=False)

or

dp.init(["Temperature °C", "Pressure mbar", "Humidity %"], linesPerSubplot=1,  maxPoints=100)

label()

Changes the label of a plot line used in the legend.

label(id, label)

Parameter

  • id (int) – The id of the target plot line
  • label (str) – The new label text

Example

dp.label(0, "mass in kg")

refresh()

Refreshes the contents of the plot window.

Mostly used in conjunction with add() and refresh=False.

refresh()

Example

dp.add(0, 0.1, 7.3, False)
dp.add(0, 0.2, 6.9, False)
dp.add(0, 0.3, 2.1, False)
dp.refresh()

showMarker()

Shows or hides marker points on a plot line or on all plot lines.

showMarker(show=True, id=None)

Parameter

  • show (bool) – Show or hide markes. Optional with default True
  • id (int) – The id of the target plot line. Optional with default None resulting in a change of markers on all plot lines.

Example

dp.showMarker()

or

dp.showMarker(False, 1)

title()

Changes the title of a sub-plot

title(id, title)

Parameter

  • id (int) – The id of the target plot line used to determine the corresponding sub-plot
  • title (str) – The new title text

Example

dp.title(0, "Simulated Values")

waitforclose()

Updates the title on the plot window and blocks execution until user closes the plot window.

waitforclose(msg=None)

Parameter

  • msg (str) – A string to be shown on the window title and on stdout. Optional with default None resulting in a standard title

Example

dp.waitforclose()

or

dp.waitforclose("PLEASE CLOSE THE DIRECT PLOT WINDOW")

xylabel()

Changes the axis lables of a sub-plot.

xylabel(id, xlabel, ylabel)

Parameter

  • id (int) – The id of the target plot line used to determine the corresponding sub-plot
  • xlabel (str) – New label for the x axis
  • ylabel (str) – New label for the y axis

Example

dp.xylabel(0, "time in s", "force in N")

Development

Build pypi package

Tools needed to build and publish to PyPi under Windows:

python -m pip install --upgrade build
python -m pip install --upgrade twine

Tools needed to build and publish to PyPi Linux/MacOS:

python3 -m pip install --upgrade build
python3 -m pip install --upgrade twine

Build package:

python -m build

Upload package to pypi:

Before uploading, delete outdated build artifacts in the dist folder, such that only the latest build files are uploaded.

twine upload dist/*

About

Educational library to directly plot single data points.

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages