adjustText
Iteratively adjust text position in matplotlib plots to minimize overlaps
Decision gist · record as of 2026-08-14
Yes. Low install friction, permissive MIT license, active maintenance, no known vulnerabilities, and solves a genuine matplotlib usability problem. Install if you regularly create labeled plots and want to avoid manual label repositioning.AI-flagged interpretation of the facts on this page — verify before relying
Before you install
- Low friction install with three common scientific dependencies (numpy, matplotlib, scipy).
- Actively maintained with recent releases; repository shows 1660 stars and current activity.
License · maintenance · safety
MIT (permissive) — MIT license permits use in proprietary and open-source projects with minimal restrictions; attribution required but no copyleft obligations.
last release 2026-06-08 (67 days) · last repo commit 2026-06-08 · 1,660 stars
0 known vulnerabilities (OSV.dev, 2026-08-14) · 1,212,535 downloads/mo, #4,211 on PyPI
Alternatives
Verify before relying
pip install adjustText
import matplotlib.pyplot as plt
from adjustText import adjust_text
plt.scatter([1, 2, 3], [1, 2, 3])
texts = [plt.text(x, y, f'label{i}') for i, (x, y) in enumerate([(1,1), (2,2), (3,3)])]
adjust_text(texts)
plt.show()- Whether the algorithm's performance scales well with very large numbers of labels (hundreds or thousands)
- Specific configuration options available for tuning label placement behavior on complex plots
What it is and what it does
adjustText solves the common problem of overlapping text labels on matplotlib plots by iteratively repositioning them to minimize collisions. When plotting multiple labeled points, the default matplotlib text placement often results in unreadable overlaps; this package automates the tedious manual repositioning work by applying an algorithm that moves labels away from each other and data points while keeping them visually associated with their targets.
The package works as a post-processing step on an existing matplotlib figure: you create your plot normally, pass the text objects to adjustText's main function, and it adjusts their positions. It requires only numpy, matplotlib, and scipy as dependencies and is designed to work well with minimal configuration, though the algorithm is highly configurable for complex cases. The library is inspired by ggrepel for R and offers a simpler alternative to manual label placement.
Use it for
- Scatter plots with many labeled data points where default text placement causes heavy overlap
- Scientific figures with annotations that need automatic repositioning to improve readability
- Multi-point graphs where manual label adjustment would be time-consuming and error-prone
- Publication-ready plots requiring clean, non-overlapping label layouts without manual tweaking
Worth the install?
AI-flagged interpretation of the facts on this page. Verify before relying on it.
Yes.
Low install friction, permissive MIT license, active maintenance, no known vulnerabilities, and solves a genuine matplotlib usability problem. Install if you regularly create labeled plots and want to avoid manual label repositioning.
Install
adjusttext on PyPI
Before you install
Low friction install with three common scientific dependencies (numpy, matplotlib, scipy). Actively maintained with recent releases; repository shows 1660 stars and current activity.
License in practice
MIT license permits use in proprietary and open-source projects with minimal restrictions; attribution required but no copyleft obligations.
Quickstart
pip install adjustText
import matplotlib.pyplot as plt
from adjustText import adjust_text
plt.scatter([1, 2, 3], [1, 2, 3])
texts = [plt.text(x, y, f'label{i}') for i, (x, y) in enumerate([(1,1), (2,2), (3,3)])]
adjust_text(texts)
plt.show()
Verify before relying
- Whether the algorithm's performance scales well with very large numbers of labels (hundreds or thousands)
- Specific configuration options available for tuning label placement behavior on complex plots
Package facts
| License | MIT permissive |
| Python support | Not specified |
| Install friction | Low. Pure-Python wheel |
| Runtime dependencies | 3 packagesnumpymatplotlibscipy |
| Maintenance | Actively maintained 67 days since the last release |
| Last repo commit | |
| First released | |
| Downloads | 1,212,535 / month, #4,211 on PyPI 30-day window, as of 2026-08-14 |
| Known vulnerabilities | None known OSV.dev, checked 2026-08-14 |
| Classifiers | Framework :: MatplotlibTopic :: Scientific/Engineering :: Visualization |
Evidence: adjusttext-1.4.0-py3-none-any.whl
Tags
Let your AI agent find packages like this
Example. Real query, live index.
You found this page by searching. An agent finds it by wishing: SkillFed indexes 14,416 PyPI packages by what they can do, searchable in plain language.
wish › “matplotlib label overlap removal”
- adjustTextAutomatically repositions text labels on matplotlib plots to minimize…
- dtlpymetricsCalculates and generates quality scores for annotations in image and…
- matplotlib-vennPlots area-weighted two- and three-circle Venn diagrams using…
Give your agent the search over MCP, or paste the wish link into any chat.
More Visualization packages
matplotlib creates static, animated, and interactive visualizations in Python, producing publication-quality figures in multiple formats for scripts, shells, web servers, and graphical interfaces.
Install it if you need to visualize data, generate publication-quality figures, or embed plots in applications.
ContourPy calculates contours of 2D quadrilateral grids using C++11 algorithms wrapped in Python, offering serial and multithreaded implementations without requiring Matplotlib as a dependency.
Plotly is an interactive, browser-based graphing library that creates charts and visualizations from Python, rendering them as HTML that can be viewed in Jupyter notebooks, standalone files, or web applications.
Generates DOT language source code for graph structures and renders them using the Graphviz graph drawing software installed on your system.
Install it if you need to generate or render graphs from Python.
Streamlit transforms Python scripts into interactive web applications with minimal code, enabling rapid development of data dashboards, reports, and chat interfaces without requiring web development expertise.
Leather is a lightweight Python charting library for quick, no-frills data visualization. It generates charts without requiring perfect styling or extensive configuration.
See also japanize-matplotlib · lovelyplots · matplotlib-fontja · UpSetPlot · termplotlib · plotnine · koreanize-matplotlib · rectangle-packer · mplcursors · matplotlib-scalebar