FaSt_Fig
FaSt_Fig is a wrapper for matplotlib that provides a simple interface for fast and easy plotting.
Key features:
- Predefined templates for consistent styling
- Figure instantiation in a class object
- Simplified plotting methods with smart defaults
- Automatic handling of DataFrames
- Context manager support for clean resource management
- Type hints and logging for better development experience
Installation
pip install fast_fig
Basic Usage
from fast_fig import FFig
x = [1,2,3,4,5]
y1 = [2,4,5,6,10]
y2 = [1,3,2,6,9]
# Simple plot example
fig = FFig()
fig.plot(x,y1)
fig.show()
# Use large template and save figure to multiple formats
fig = FFig('l')
fig.plot(x,y)
fig.save('plot.png', 'pdf')
Context Manager
FaSt_Fig can be used as a context manager for automatic resource cleanup:
with FFig('l', nrows=2, sharex=True) as fig: # Large template, 2 rows sharing x-axis
fig.plot([1, 2, 2.5], label="First") # Plot in first axis/subplot
fig.set_title("First plot")
fig.next_axis() # Switch to second axis/subplot
fig.plot([0, 1, 2], [0, 1, 4], label="Second") # Plot with x,y data
fig.legend() # Add legend
fig.grid() # Add grid
fig.set_xlabel("X values") # Label x-axis
fig.save("plot.png", "pdf") # Save as PNG and PDF
# Figure automatically closed when exiting the with block
Plot Types
FaSt_Fig supports all plots of matplotlib. The following plots have adjusted settings to improve their use.
# Bar plots
fig.bar_plot(x, height)
# Logarithmic scales
fig.semilogx(x, y) # logarithmic x-axis
fig.semilogy(x, y) # logarithmic y-axis
# 2D plots
x, y = np.meshgrid(np.linspace(-2, 2, 100), np.linspace(-2, 2, 100))
z = np.exp(-(x**2 + y**2))
fig.pcolor(z) # pseudocolor plot
fig.colorbar(label='Values') # add colorbar
fig.pcolor_log(z) # pseudocolor with logarithmic color scale
fig.contour(z, levels=[0.2, 0.5, 0.8]) # contour plot
# Scatter plots
fig.scatter(x, y, c=colors, s=sizes) # scatter plot with colors and sizes
DataFrame Support
FaSt_Fig has built-in support for pandas DataFrames:
import pandas as pd
# Create a DataFrame with datetime index
df = pd.DataFrame({
'A': [1, 2, 3, 4],
'B': [2, 4, 6, 8]
}, index=pd.date_range('2024-01-01', periods=4))
fig = FFig()
fig.plot(df) # Automatic handling:
# - Each column becomes a line
# - Column names become labels
# - Index used as x-axis
# - Date index sets x-label to "Date"
Matplotlib interaction
FaSt_Fig provides direct access to matplotlib objects through these handlers:
fig.current_axis: Current axes instance for active subplotfig.handle_fig: Figure instance for figure-level operationsfig.handle_plot: Current plot instance(s)fig.handle_axis: All axes instances for subplot access
fig.current_axis.set_yscale('log') # Direct matplotlib axis methods
fig.handle_fig.tight_layout() # Adjust layout
fig.handle_plot[0].set_linewidth(2) # Modify line properties
fig.handle_axis[0].set_title('First subplot') # Access any subplot
These handles provide full access to matplotlib's functionality when needed.
Presets
FaSt_Fig comes with built-in presets that control figure appearance. Available preset templates:
m(medium): 15x10 cm, sans-serif font, good for general uses(small): 10x8 cm, sans-serif font, suitable for small plotsl(large): 20x15 cm, sans-serif font, ideal for presentationsol(Optics Letters): 8x6 cm, serif font, optimized for single line plotsoe(Optics Express): 12x8 cm, serif font, designed for equation plotssquare: 10x10 cm, serif font, perfect for square plots
Each preset defines:
width: Figure width in cmheight: Figure height in cmfontfamily: Font family (serif or sans-serif)fontsize: Font size in pointslinewidth: Line width in points
You can use presets in three ways:
- Use a built-in preset:
fig = FFig('l') # Use large preset
- Load custom presets from a file:
fig = FFig('m', presets='my_presets.yaml') # YAML format
fig = FFig('m', presets='my_presets.json') # or JSON format
- Override specific preset values:
fig = FFig('m', width=12, fontsize=14) # Override width and fontsize
The preset system also includes color sequences and line styles that cycle automatically when plotting multiple lines:
- Default colors: blue, red, green, orange
- Default line styles: solid (-), dashed (--), dotted (:), dash-dot (-.)
Contributing
Contributions are welcome! Please feel free to submit a Pull Request.
License
Licensed under MIT License. See LICENSE for details.
Author
Written by Fabian Stutzki (fast@fast-apps.de)
For more information, visit www.fast-apps.de
Metadata
Release files for fast-fig 0.8.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| fast_fig-0.8.0.tar.gz | 22.2 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| fast_fig-0.8.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 38.9 kB
Release files / fast_fig-0.8.0.tar.gz
| Download URL | fast_fig-0.8.0.tar.gz |
|---|---|
| Size | 22.2 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
58a5f90b940e3eaba27a0aed24a3381f0414ddf9d34743f36c00756dd5fab5c4
|
|
BLAKE2b-256 checksum How to use checksums |
f670c0cc7bafdfdf835a3af4a857fb453fd57662de09277b16366dd7ff25234a
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.8.13
|
Release files / fast_fig-0.8.0-py3-none-any.whl
| Download URL | fast_fig-0.8.0-py3-none-any.whl |
|---|---|
| Size | 16.7 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
21c1da83b54423391e8c3a9c66afe34c82410c4bd63fc6895a8c46dc568bc3bc
|
|
BLAKE2b-256 checksum How to use checksums |
68a76144e18e2f2ae6ff2911a50183c2a782b80261729d724adc1d6b666028ea
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.8.13
|