Releases: brianckeegan/memeplotlib
v0.3.0
What's Changed
- Fix GitHub Pages deployment failing on release tags #11
- Fix README images: use distinct text for each example section #12
- Add configurable base font size for auto-sizing #13
- Add workflow to automatically regenerate example images #14
Full Changelog: v0.2.0...v0.3.0
v0.2.0
What's Changed
- Add rendered output images for all code examples in docs and README #8
- Use real meme template images instead of synthetic gradients #10
Full Changelog: Major...v0.2.0
v0.1.0
Highlights
This is the first public release of memeplotlib, a Python library for creating image-macro memes using matplotlib for rendering and the memegen API for template discovery. Whether you need a quick one-liner meme or want to memify an existing scientific figure, this release gives you two complete APIs and a full suite of configuration and template tooling to do it.
Installation
pip install memeplotlibRequires Python 3.10+.
What's New
Functional API
A simple module-level interface for the most common use cases:
import memeplotlib as memes
# One-liner from a memegen template
memes.meme("buzz", "memes", "memes everywhere")
# Customize font and color
memes.meme("drake", "writing tests", "shipping to prod",
font="impact", color="yellow")
# Get the figure back for further customization
fig, ax = memes.meme("distracted", "my project", "new framework", "me",
show=False)
# Save directly to disk
memes.meme("doge", "such code", "very bug", savefig="meme.png", show=False)
# Use a local image as the template
memes.meme("/path/to/image.jpg", "top text", "bottom text")Object-Oriented API
A chainable Meme class for step-by-step construction:
from memeplotlib import Meme
# Step by step
m = Meme("buzz")
m.top("memes")
m.bottom("memes everywhere")
m.save("output.png")
# Or fully chained
Meme("doge").top("such code").bottom("very bug").show()Memify Existing Figures
Turn any existing matplotlib figure into a meme — useful for scientific
communication, presentations, or any plot that just needs a caption:
import matplotlib.pyplot as plt
import memeplotlib as memes
fig, ax = plt.subplots()
ax.plot([1, 2, 3], [1, 4, 9])
memes.memify(fig, "stonks")Global Configuration
Set library-wide defaults once rather than repeating them per call:
import memeplotlib as memes
memes.config.font = "comic"
memes.config.color = "yellow"
memes.config.style = "none" # disable auto-uppercaseTemplate Discovery
Search and enumerate the full memegen template catalog:
from memeplotlib import TemplateRegistry
reg = TemplateRegistry()
results = reg.search("dog")
all_templates = reg.list_all()Text Rendering
- Classic outlined meme look via
matplotlib'spatheffects.Stroke - Bundled Anton font as a fallback for systems without Impact installed
- Supports arbitrary font, color, and casing configuration
Local Template Caching
Templates fetched from the memegen API are cached locally via platformdirs
for offline reuse and faster subsequent renders.
Dependencies
| Package | Minimum version |
|---|---|
matplotlib |
3.0.0 |
requests |
— |
numpy |
— |
Pillow |
— |
platformdirs |
— |
Documentation
Full documentation — including a tutorial, user guide, and API reference — is
available at
brianckeegan.github.io/memeplotlib
Known Limitations & Upcoming Work
- Package not yet published to PyPI or conda-forge
(tracked in [#2](../../issues/2)) - README and documentation pages lack rendered output images for examples
(tracked in [#1](../../issues/1)) - No Windows or macOS CI matrix yet; Linux only
- Template search requires an active internet connection on first use
License
MIT © 2025 Brian Keegan