Skip to content

yalap13/GraphingLib

 
 

Repository files navigation

PyPI version Documentation Status License PyPi downloads GitHub stars DOI

GraphingLib

graphinglib logo

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:

  1. 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.
  2. Data Analysis Functions: Implement common data analysis functions and operations to streamline the visualization process.
  3. Custom Figure Styles: Facilitate the customization and reuse of figure styles.

How is GraphingLib different?

  • 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.

Getting started

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 graphinglib

From source with

pip install git+https://github.com/GraphingLib/GraphingLib.git

Using Poetry with

poetry add graphinglib

Using uv with

uv add graphinglib

Optional extras:

  • Astronomical projections (SmartFigureWCS): install pip install graphinglib[astro]

Contributing

We welcome contributions from the community. If you're interested in contributing to GraphingLib, please read our contribution guidelines on our documentation website.

Example

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()

image

About

An object oriented wrapper combining the functionalities of Matplotlib and SciPy

Resources

License

Contributing

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages

  • Python 100.0%