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.
- Features
- Installation
- Quick Start
- Examples
- Plot Composition
- Themes
- Exporting Plots
- Architecture Overview
- API Reference
- Testing
- Documentation
- Contributing
- RichieClan Team
- License
- Contact
- One-Line Plotting: Create beautiful visualizations with single commands
- Method Chaining: Fluent API for intuitive plot customization
- Built-in Themes: Multiple professional themes (default, dark, minimal, colorful)
- Comprehensive Plot Types: Scatter, line, bar, histogram, box, heatmap
- Smart Composition: Easily combine multiple plots
- Easy Export: Save in multiple formats (PNG, PDF, SVG)
- Full OOP Design: Encapsulation, inheritance, polymorphism
pip install lightenplotgit clone https://github.com/khassndrajayme/lightenplot.git
cd lightenplot
pip install -r requirement.txt
pip install -e .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()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()https://pypi.org/project/lightenplot/
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()lp.line(data, x='month', y='revenue', color='#FF6B6B', linewidth=2.5) \
.set_title('Monthly Revenue') \
.apply_theme('dark') \
.show()lp.bar(data, x='category', y='value', color='#4ECDC4') \
.set_title('Sales by Category') \
.show()import numpy as np
ages = np.random.normal(35, 10, 1000)
lp.histogram(ages, bins=30, color='skyblue') \
.set_title('Age Distribution') \
.show()lp.boxplot(data, columns=['Group_A', 'Group_B', 'Group_C']) \
.set_title('Performance Comparison') \
.show()correlation_matrix = data.corr()
lp.heatmap(correlation_matrix, cmap='coolwarm', annot=True) \
.set_title('Correlation Matrix') \
.show()# 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()Lightenplot includes 4 built-in themes:
default: Clean, professional lookdark: Dark mode with high contrastminimal: Minimalist design with no spinescolorful: Vibrant, eye-catching colors
# Apply theme
plot.apply_theme('dark')
# List available themes
print(lp.ThemeManager.list_themes())# 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'])Lightenplot is built with solid OOP principles:
- BasePlot: Abstract base class for all plots
- ScatterPlot, LinePlot, BarPlot, etc.: Specific plot implementations
- PlotComposer: Compose multiple plots (composition pattern)
- ThemeManager: Manage and apply themes (singleton pattern)
- PlotExporter: Handle plot exports
- Encapsulation: Private attributes (
_data,_theme) - Inheritance: All plots inherit from
BasePlot - Polymorphism: Theme classes with common interface
- Composition:
PlotComposercontainsBasePlotinstances - Dunder Methods:
__repr__,__str__,__eq__,__lt__
| 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 |
| 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 |
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/Contributions are welcome! Please feel free to submit a Pull Request.
- Fork the repository
- Create your feature branch (
git checkout -b feature/AmazingFeature) - Commit your changes (
git commit -m 'Add some AmazingFeature') - Push to the branch (
git push origin feature/AmazingFeature) - Open a Pull Request
- 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
This project is licensed under the MIT License - see the LICENSE file for details.
- Built on top of Matplotlib
- Inspired by Seaborn
- Thanks to our instructor for guidance and support
- Inspired by matplotlib, seaborn, and ggplot2
For questions or feedback, please open an issue on GitHub or contact us at khassandrajayme@gmail.com
Made with Love by RichieClan