The Bee Swarm Plot, an Alternative to Stripchart

The bee swarm plot is a one-dimensional scatter plot like "stripchart", but with closely-packed, non-overlapping points.

An R package implementing bee swarm plots

You can see some examples here:


You can install the latest release on CRAN like this:


You can install the latest development version from GitHub like this:



beeswarm NEWS

Changes in version 0.2.3 (2016-04-25)

  • Fixed a bug in which specifying non-default "corral" and "side" arguments would result in unexpected results. (Issue #2)

Changes in version 0.2.2 (2015-11-25)

  • Check that glim, dlim, xlim, ylim have length 2, thus avoiding confusing errors.
  • New argument "axes" (previously, trying to specify "axes" in ... would cause an error).

Changes in version 0.2.1 (2015-08-26)

  • Corrected NAMESPACE and DESCRIPTION to properly indicate Imports and to remove unnecessary Depends.

Changes in version 0.2.0 (2015-05-04)

  • New arguments "side" and "priority" for beeswarm, swarmx, and swarmy. "side" allows swarms to grow on only one side rather than both sides. "priority" controls the order in which swarms are built, thus affecting the appearance of the plot. Thanks to Jon Lake and Brad Stiritz for suggestions.

Changes in version 0.1.8 (2015-04-30)

  • Added "Depends: stats" to DESCRIPTION and removed "require(stats)" calls from code in order to achieve a clean package check

Changes in version 0.1.7 (2014-08-05)

  • ".calculateSwarm" now performs the swarm point layout more efficiently

Changes in version 0.1.6 (2013-09-18)

  • The argument "labels" now gets recycled.
  • "labels = NULL" is now the same as missing "labels"; i.e. labels are inferred from data.
  • There is now a "corralWidth" argument to control the size of corrals, if corrals are used.

Changes in version 0.1.5 (2012-05-07)

  • Minor adjustments.

Changes in version 0.1.4 (2012-05-03)

  • Minor adjustments.

Changes in version 0.1.3 (2012-03-22)

  • New function "bxplot" as a minimal version of "boxplot", intended mainly as a way to add quantile lines to a beeswarm plot.
  • "beeswarm" has a new argument "corral" to control the spread of swarms into adjacent groups.

Changes in version 0.1.2 (2012-03-14)

  • Documentation fixes
  • Added a NAMESPACE file
  • The formula interface now splits as expected for formulas such as: x ~ y * z

Changes in version 0.1.1 (2011-08-04)

  • Documentation fixes.
  • Adjusted "beeswarm.default" to work when x is a simple numeric vector.
  • Removed "beeswarm.numeric" .

Changes in version 0.1.0 (2011-08-03)

  • In "beeswarm", defaults for "col", "pch" are now taken from "par", and "bg" defaults to NA, and "pwbg" defaults to NULL.
  • Renamed "smile" method; now it is called "swarm"
  • Changed default method to "swarm"
  • Removed function "smile"
  • New functions "swarmx" and "swarmy" for easily adding swarm-ed points to a plot.
  • Fixed bug affecting swarming when par('cex') was not 1.
  • Fixed bug reversing xlim and ylim on horizontal plots.
  • Fixed bug causing an error if xlim or ylim were set to NULL
  • Defaults for xlim and ylim are now NULL instead of missing
  • New argument 'dlim'
  • Log scales are now supported.

Reference manual

It appears you don't have a PDF plugin for this browser. You can click here to download the reference manual.


0.4.0 by Aron Eklund, 22 days ago

Report a bug at

Browse source code at

Authors: Aron Eklund [aut, cre] , James Trimble [aut]

Documentation:   PDF Manual  

Artistic-2.0 license

Imports stats, graphics, grDevices, utils

Imported by HiResTEC, IRTShiny, clickR, ggbeeswarm, tmod.

Suggested by ggdist, vipor.

See at CRAN