Skip to content

Khassndrajayme/lightenplot

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

268 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

lightenplot

Dramatically Simplify Data Visualization in Python

Lightenplot is a Python library that reduces complex visualization code into single-line commands, while maintaining the power and flexibility of matplotlib and seaborn.

Python Version License PyPI

Table of Contents

UML Diagram

LightenPlot UML Architecture

Features

  1. One-Line Plotting: Create beautiful visualizations with single commands
  2. Method Chaining: Fluent API for intuitive plot customization
  3. Built-in Themes: Multiple professional themes (default, dark, minimal, colorful)
  4. Comprehensive Plot Types: Scatter, line, bar, histogram, box, heatmap
  5. Smart Composition: Easily combine multiple plots
  6. Easy Export: Save in multiple formats (PNG, PDF, SVG)
  7. Full OOP Design: Encapsulation, inheritance, polymorphism

Installation

pip install lightenplot

From Source

git clone https://github.com/khassndrajayme/lightenplot.git
cd lightenplot
pip install -r requirement.txt
pip install -e .

Quick Start

Traditional Way (10+ lines)

import matplotlib.pyplot as plt
import pandas as pd

data = pd.DataFrame({'x': [1, 2, 3, 4], 'y': [2, 4, 6, 8]})
fig, ax = plt.subplots(figsize=(10, 6))
ax.scatter(data['x'], data['y'], alpha=0.6)
ax.set_xlabel('X Values')
ax.set_ylabel('Y Values')
ax.set_title('My Scatter Plot')
ax.grid(True, alpha=0.3)
plt.tight_layout()
plt.show()

LightenPlot Way (1 line!)

import lightenplot as lp
import pandas as pd

data = pd.DataFrame({'x': [1, 2, 3], 'y': [4, 5, 6]})
lp.scatter(data, x='x', y='y').set_title('My Scatter Plot').show()

PyPI Package:

https://pypi.org/project/lightenplot/

Examples

Scatter Plot

import lightenplot as lp
import pandas as pd

data = pd.DataFrame({
    'age': [25, 30, 35, 40, 45],
    'salary': [50000, 60000, 75000, 80000, 95000]
})

lp.scatter(data, x='age', y='salary', color='steelblue') \
  .set_title('Age vs Salary') \
  .set_labels('Age (years)', 'Salary ($)') \
  .apply_theme('minimal') \
  .save('plot.png') \
  .show()

Line Plot

lp.line(data, x='month', y='revenue', color='#FF6B6B', linewidth=2.5) \
  .set_title('Monthly Revenue') \
  .apply_theme('dark') \
  .show()

Bar Plot

lp.bar(data, x='category', y='value', color='#4ECDC4') \
  .set_title('Sales by Category') \
  .show()

Histogram

import numpy as np

ages = np.random.normal(35, 10, 1000)
lp.histogram(ages, bins=30, color='skyblue') \
  .set_title('Age Distribution') \
  .show()

Box Plot

lp.boxplot(data, columns=['Group_A', 'Group_B', 'Group_C']) \
  .set_title('Performance Comparison') \
  .show()

Heatmap

correlation_matrix = data.corr()
lp.heatmap(correlation_matrix, cmap='coolwarm', annot=True) \
  .set_title('Correlation Matrix') \
  .show()

Plot Composition

# Create individual plots
plot1 = lp.scatter(data, x='x', y='y')
plot2 = lp.line(data, x='date', y='value')
plot3 = lp.bar(data, x='cat', y='count')
plot4 = lp.histogram(values, bins=20)

# Compose into 2x2 grid
composer = lp.compose(rows=2, cols=2)
composer.add_plot(plot1).add_plot(plot2).add_plot(plot3).add_plot(plot4)
composer.show()

Themes

Lightenplot includes 4 built-in themes:

  • default: Clean, professional look
  • dark: Dark mode with high contrast
  • minimal: Minimalist design with no spines
  • colorful: Vibrant, eye-catching colors
# Apply theme
plot.apply_theme('dark')

# List available themes
print(lp.ThemeManager.list_themes())

Exporting Plots

# Single format
plot.save('output.png', dpi=300)

# Multiple formats
from lightenplot import PlotExporter
exporter = PlotExporter(plot.figure)
exporter.save_multiple('output', formats=['png', 'pdf', 'svg'])

Architecture

Lightenplot is built with solid OOP principles:

Core Classes

  1. BasePlot: Abstract base class for all plots
  2. ScatterPlot, LinePlot, BarPlot, etc.: Specific plot implementations
  3. PlotComposer: Compose multiple plots (composition pattern)
  4. ThemeManager: Manage and apply themes (singleton pattern)
  5. PlotExporter: Handle plot exports

OOP Features Demonstrated

  1. Encapsulation: Private attributes (_data, _theme)
  2. Inheritance: All plots inherit from BasePlot
  3. Polymorphism: Theme classes with common interface
  4. Composition: PlotComposer contains BasePlot instances
  5. Dunder Methods: __repr__, __str__, __eq__, __lt__

API Reference

Quick Functions

Function Description
scatter() Create scatter plot
line() Create line plot
bar() Create bar plot
histogram() Create histogram
boxplot() Create box plot
heatmap() Create heatmap
compose() Create plot composer

Common Methods

Method Description
.set_title(title) Set plot title
.set_labels(x, y) Set axis labels
.apply_theme(name) Apply theme
.save(filename) Save plot
.show() Display plot

Testing

Run unit tests:

# Simple run
pytest tests/test_all.py

# Verbose (shows test names)
pytest tests/test_all.py -v

# Show print statements
pytest tests/test_all.py -v -s

# Stop on first failure
pytest tests/test_all.py -x

# Run specific test class
pytest tests/test_all.py::TestScatterPlot -v

# Run specific test method
pytest tests/test_all.py::TestScatterPlot::test_scatter_creation -v

# With coverage
pytest tests/test_all.py --cov=lightenplot --cov-report=term

# Run all tests in tests/ folder
pytest tests/

Or with unittest:

python -m unittest discover tests/

Contributing

Contributions are welcome! Please feel free to submit a Pull Request.

  1. Fork the repository
  2. Create your feature branch (git checkout -b feature/AmazingFeature)
  3. Commit your changes (git commit -m 'Add some AmazingFeature')
  4. Push to the branch (git push origin feature/AmazingFeature)
  5. Open a Pull Request

RichieClan Team

  • Khassandra Louise C. Jayme - Lead Developer - GitHub
  • Sheena Angela T. Janog - Developer - GitHub
  • Xavier Neo Mahilum - Developer - GitHub
  • Allen Floro Ventura - Developer - GitHub
  • Genetyron Zamoranos - Developer - GitHub

๐Ÿ“„ License

This project is licensed under the MIT License - see the LICENSE file for details.

Acknowledgments

  • Built on top of Matplotlib
  • Inspired by Seaborn
  • Thanks to our instructor for guidance and support
  • Inspired by matplotlib, seaborn, and ggplot2

Contact

For questions or feedback, please open an issue on GitHub or contact us at khassandrajayme@gmail.com


Made with Love by RichieClan

About

Lightenplot is a Python library designed for efficient data visualization. It reduces extensive, multi-line plotting logic into intuitive, single-line commands, all while preserving the advanced functionality and flexibility of Matplotlib and Seaborn.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors