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.
Metadata
Release files for diegoplot 1.3
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| diegoplot-1.3.tar.gz | 222.2 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| diegoplot-1.3-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 229.4 kB
Release files / diegoplot-1.3.tar.gz
| Download URL | diegoplot-1.3.tar.gz |
|---|---|
| Size | 222.2 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
ea61e939a382c3fc56f84c04b8b3e7349123936685ef06ede548e35595106fdc
|
|
BLAKE2b-256 checksum How to use checksums |
23d61b1c4c00c541b8160d3c2bec651199389654b064b439080bb588fbb80107
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/5.1.0 CPython/3.12.0
|
Release files / diegoplot-1.3-py3-none-any.whl
| Download URL | diegoplot-1.3-py3-none-any.whl |
|---|---|
| Size | 7.2 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
5173e58bedfda809fe8f014d0945611d01d3695e2c94bf5d7a3558e70d43eb89
|
|
BLAKE2b-256 checksum How to use checksums |
5a1855bc7df01fa8daea86cf4b3c2a1a73feecd25eaff06bf79af848c4d209eb
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/5.1.0 CPython/3.12.0
|