A scientific style plot tool based on matplotlib.
Project description
sciplot
A scientific style plot tool based on matplotlib.
Features
- Plot figures for scientific articles painlessly, with right size, font, and others.
- Quick preview, quick as hell.
- Supporting three built in styles and custom style.
- (a) Color cycle, looks cleaner for online journals.
- (b) Color and marker cycle, support black-and-white view.
- (c) Line style and marker cycle, support up to 16 lines without repeat.
- (d) Custom style, easy to set and useful when you got several groups of curves.
Install
Install by pip:
pip install diegoplot
(This project was intended to be called as sciplot, but there is already a sciplot in pipy. Thus I just named it by my name as diegoplot.)
Import the package:
from diegoplot import diegoplot
diegoplot.DiegoPlot()
Or, you can copy the diegoplot.py file into the folder of your project and import it by:
import diegoplot
diegoplot.DiegoPlot()
mini demo
To preview the figure comes from your data, the fast way is just SciPlot(x, y).
No configurations needed, you'll get a pretty much finished figure.
Optionally, label, legend, and tag could be given as keyword arguments.
# This demo gives the figure (a) above.
import numpy as np
from diegoplot import diegoplot
x = np.linspace(0, 10, 100)
y = np.array([(a + 1) * np.sin(x) for a in range(4)])
diegoplot.DiegoPlot(x, y,
label=['x-axis', 'y-axis'],
legend=['line {}'.format(n + 1) for n in range(4)],
tag='(a)')
The data, x and y, could be in different kinds of.
- A single curve like
x = [x1, x2, ...]andy = [y1, y2, ...]is fine. - Multiple curves with same
xcoordinates should be given likex = [x1, x2, ...]andy = [[curve1_y1, curve1_y2, ...], [curve2_y1, curve2_y2, ...], ...] - Of course, multiple curves can have different
xcoordinates, just give bothxandyin the form of[[...],[...],...]. And make sure they are within the same length.
Use style and semilog
There are 3 built-in styles, 0, 1, and 2, as shown in the figure above.
And semilog plot is also supported now.
To use built-in style and semilog plot, the easiest way is to use the autoplot feature.
diegoplot.Diegoplot(x, y, linestyle=1, log_y=True)
To use custom style, see the Fine tuning section below.
Fine tuning
A fine-tuning is needed to generate the final product.
In this case, you are supposed to use the sciplot in a detailed way.
There are up to 6 steps: load data, plot data, plot label, plot legend, plot tag, and show.
# This demo gives the figure (b) above.
import numpy as np
from diegoplot import diegoplot
x = np.linspace(0, 10, 30)
y = np.array([(a + 1) * np.sin(x) for a in range(4)])
dp = diegoplot.DiegoPlot()
dp.manual_load(x, y, ['x-axis', 'y-axis'], ['line {}'.format(n + 1) for n in range(4)])
dp.plot_data(1) # 1 for style 1. Currently, there are 3 built in styles, 0, 1, and 2.
# Corresponding to figure (a), (b), and (c).
dp.plot_label() # Optionally, label can be given here as a parameter.
dp.plot_legend() # Optionally, legend can be given here as a parameter.
dp.plot_tag('(b)') # The position of the tag is configurable, see annotation of this function.
dp.show() # Comes with an auto-tight function. Pass through auto_tight=False to disable it.
Apart those steps means you can write your own, customized ones. Or add some operations before show().
Change the range of axis is often used to make curves looks better, or avoid interfering with legend and tag.
This is change by sp.ax, which is exactly the axis object of matplotlib.
You should see the documentation of matplotlib for more, but I'll list some useful functions.
# axis span range
dp.ax.set_xlim([0, 1])
dp.ax.set_ylim([0, 1])
# where are the scale lines
dp.ax.set_xticks([0, 0.5, 1])
dp.ax.set_yticks([0, 0.5, 1])
# plot text, lines, annotates
dp.ax.text()
dp.ax.hline()
dp.ax.vline()
dp.ax.annotate()
# create another y-axis
ax2 = dp.ax.twinx()
Load data
Data can be load in different ways.
They can be load manually by sp.manual_load(), or load form txt, npz, and csv files.
For data generated by python, npz is strongly recommended.
sciplot have three built-in functions to load these data: load_npz(), load_txt(), load_csv().
These functions are coding for my use case.
Annotations are given about how the data are organized.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file diegoplot-1.3.tar.gz.
File metadata
- Download URL: diegoplot-1.3.tar.gz
- Upload date:
- Size: 222.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.1.0 CPython/3.12.0
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ea61e939a382c3fc56f84c04b8b3e7349123936685ef06ede548e35595106fdc
|
|
| MD5 |
000f3786a6a8579fe193c07ab054ffe1
|
|
| BLAKE2b-256 |
23d61b1c4c00c541b8160d3c2bec651199389654b064b439080bb588fbb80107
|
File details
Details for the file diegoplot-1.3-py3-none-any.whl.
File metadata
- Download URL: diegoplot-1.3-py3-none-any.whl
- Upload date:
- Size: 7.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.1.0 CPython/3.12.0
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
5173e58bedfda809fe8f014d0945611d01d3695e2c94bf5d7a3558e70d43eb89
|
|
| MD5 |
8e9e77cd07b433e536932e6d90ef853b
|
|
| BLAKE2b-256 |
5a1855bc7df01fa8daea86cf4b3c2a1a73feecd25eaff06bf79af848c4d209eb
|