Skip to content

v0.1.0

Choose a tag to compare

@brianckeegan brianckeegan released this 12 Feb 21:03
· 38 commits to main since this release
998b83a

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 memeplotlib

Requires 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-uppercase

Template 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's patheffects.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