## R

### ggforce

Annotation is important for storytelling, and ggforce provides a family of geoms that makes it easy to draw attention to, and describe, features of the plot. They all work in the same way, but differ in the way they enclose the area you want to draw attention to.

### directlabels

An extensible framework for automatically placing direct labels onto multicolor ‘lattice’ or ‘ggplot2’ plots. Label positions are described using Positioning Methods which can be re-used across several different plots. There are heuristics for examining “trellis” and “ggplot” objects and inferring an appropriate Positioning Method.

### ggwordcloud

ggwordcloud provides a word cloud text geom for ggplot2. The placement algorithm implemented in C++ is an hybrid between the one of wordcloud and the one of wordcloud2.js. The cloud can grow according to a shape and stay within a mask. The size aesthetic is used either to control the font size or the printed area of the words. ggwordcloud also supports arbitrary text rotation. The faceting scheme of ggplot2 can also be used.

The ggwordcloud package implements a spiraling algorithm to prevent text labels from overlapping each other.

### wordcloud

Pretty word clouds.

The wordcloud package implements a spiraling algorithm to prevent text labels from overlapping each other.

### FField

Force field simulation of interaction of set of points. Very useful for placing text labels on graphs, such as scatterplots.

I found that functions in the FField package were not ideal for repelling overlapping rectangles, so I wrote my own.

See this gist for examples of how to use the wordcloud and FField packages with ggplot2.

## Javascript

### vega-label

Fast and Flexible Overlap Detection for Chart Labeling with Occupancy Bitmaps

Chanwut Kittivorawang, Dominik Moritz, Kanit Wongsuphasawat, Jeffrey Heer

http://idl.cs.washington.edu/papers/fast-labels/

### D3-Labeler

A D3 plug-in for automatic label placement using simulated annealing

Evan Wang’s plugin that extends D3 v3. He also described the approach in his paper.

### d3fc-label-layout

A D3 layout that places labels avoiding overlaps, with strategies including simulated annealing, greedy and a strategy that removes overlapping labels.

Colin Eberhardt’s implementation for D3 v4.

### d3-voronoi-labels

A Voronoi tessellation can assist in labeling scatterplots. The area of the Voronoi cell associated with each point determines whether the point is labeled: points with larger cells tend to have room to accommodate labels.

## Python

A small library for automatically adjusting text position in matplotlib plots to minimize overlaps.

Ilya Flyamer’s Python library that extends matplotlib.