Introducing the `analemmatic` Package for Creating Analemmatic Sundials

The analemmatic package creates analemmatic sundials.

Given a city, analemmatic will get its latitude and magnetic declination from an internal dataset and use this to construct an analemmatic sundial.

Analemmatic sundials are neat because they are a flat (horizontal) sundial with a vertical gnomon. They are often scaled up and uses as sculptures in parks such that the human standing in a specific location casts the shadow for the sundial.

The sundials output by this package include a marker for magnetic north to help you align them for local conditions.


You can install from GitHub with:

# install.packages("remotes")

This package stands on the shoulders of giants:

  • ggplot2 - for all the plotting
  • ggforce - for geom_ellipse()
  • oce - for magnetic declination calculation
  • maps - for lat/long data for 40k cities

Example: An analemmatic sundial for Brisbane, Australia

# For manual plotting see `analemmatic:::cities` data.
# create_sundial(latitude = -27.5, magnetic_declination = 11) # Brisbane


  1. Print out the image
  2. Use a compass to align the magnetic north arrow on the printed page with a compass
  3. Place a tall, thin object (the gnomon) on the page such that it is positioned at the current date (this will take some guesswork/eyeballing for any date which isn’t the 1st of the month)
  4. Read off the solar time from the shadow cast!

This is 6:30am in the middle of March in Brisbane, Australia