GraphingLib is an open-source data visualization library in Python, designed as a wrapper for matplotlib. It integrates powerful data manipulation features from libraries such as scipy, shapely, and others.
GraphingLib has the following explicit goals:
- Simplify Plotting: Provide the simplest, most intuitive, and user-friendly API to enable users to create plots in as few lines of code as possible.
- Data Analysis Functions: Implement common data analysis functions and operations to streamline the visualization process.
- Custom Figure Styles: Facilitate the customization and reuse of figure styles.
- Object-Oriented Plotting: Figures and plotted elements are all objects, making it easier to manage and manipulate plots and elements.
- Curve Fitting: Perform curve fitting with a single line of code.
- Curve Operations: Carry out differentiation, integration, arithmetic, intersections, and other standard operations on Curve objects.
- GUI Style Editor: Use the GraphingLib Style Editor to create and modify custom styles, and set them as your default style.
- Polygon Manipulation: Obtain useful information such as area, centroid, and perimeter of polygons, and manipulate them using transform and set operations methods.
- SmartFigures: Create modular figures with multiple sub-figures and an intuitive syntax.
To get started with GraphingLib, check out our comprehensive documentation and examples available on our website. Whether you're a beginner or an experienced user, our documentation provides step-by-step guides to help you make the most out of GraphingLib. Here are a few ways to install GraphingLib:
From PyPI with
pip install graphinglibFrom source with
pip install git+https://github.com/GraphingLib/GraphingLib.gitUsing Poetry with
poetry add graphinglibUsing uv with
uv add graphinglibOptional extras:
- Astronomical projections (SmartFigureWCS): install
pip install graphinglib[astro]
We welcome contributions from the community. If you're interested in contributing to GraphingLib, please read our contribution guidelines on our documentation website.
Here is a short example showing how to use GraphingLib to create a figure with a scatter plot, a fit, and a histogram of the residuals.
import graphinglib as gl
import numpy as np
# Data creation
np.random.seed(2)
x_data = np.linspace(0, 10, 100)
y_data = 3 * x_data**2 - 2 * x_data + np.random.normal(0, 10, 100)
# Create elements
scatter = gl.Scatter(x_data, y_data, label="Position data")
fit = gl.FitFromPolynomial(scatter, degree=2, label="Fit", color="red")
residuals = gl.Histogram.from_fit_residuals(fit, bins=15)
residuals.add_pdf("normal")
# Create and show figure
fig = gl.SmartFigure(
num_cols=2,
num_rows=1,
size=(10, 5),
y_lim=[None, (0, 0.06)],
sub_x_labels=["Time [s]", "Distance from fit [mm]"],
sub_y_labels=["Position [mm]", "Frequency [-]"],
subtitles=["Position as a function of time", "Histogram of fit residuals"],
)
fig[0] = [scatter, fit]
fig[1] = [residuals]
fig.show()