Your first crash course isn't in Farsi but in logistics: getting a local SIM card, downloading VPNs to access the global internet, and learning that the biggest danger in this city of political tensions is, quite simply, the traffic. As one Iranian friend aptly warned a foreign visitor, the most treacherous obstacle is "crossing the street," where drivers see a zebra crossing as a suggestion to accelerate rather than slow down.

Tehran climbs up the slope of the Alborz Mountains. You quickly learn that altitude correlates directly with wealth and social liberalism:

Tehran is visually defined by the massive Alborz mountain range to its north, a constant, majestic presence. Living here, one quickly understands the sharp geographic and socioeconomic divides.

A world of geom

ggplot2 builds charts through layers using geom_ functions. Here is a list of the different available geoms. Click one to see an example using it.

geom_bar geom_bin geom_boxplot geom_density geom_error geom_hex geom_hist geom_hline geom_jitter geom_label geom_line geom_point geom_polygon geom_rect geom_ribbon geom_rug geom_segment geom_smooth geom_text geom_tile geom_violin geom_vline
Annotation with ggplot2

Annotation is a key step in data visualization. It allows to highlight the main message of the chart, turning a messy figure in an insightful medium. ggplot2 offers many function for this purpose, allowing to add all sorts of text and shapes.





Marginal plot

Marginal plots are not natively supported by ggplot2, but their realisation is straightforward thanks to the ggExtra library as illustrated in graph #277.





ggplot2 chart appearance

The theme() function of ggplot2 allows to customize the chart appearance. It controls 3 main types of components:

Re-ordering with ggplot2


When working with categorical variables (= factors), a common struggle is to manage the order of entities on the plot.

Post #267 is dedicated to reordering. It describes 3 different way to arrange groups in a ggplot2 chart:


Read post
Tidyverse

Here’s the official ggplot2 cheatsheet created by Posit. It covers all the key concepts of the library.

I've also compiled it with the most useful R and data visualization cheatsheets into a single PDF you can download:

ggplot2 title

The ggtitle() function allows to add a title to the chart. The following post will guide you through its usage, showing how to control title main features: position, font, color, text and more.





Use custom fonts with ggplot2

If you don't want your plot to look like any others, you'll definitely be interested in using custom fonts for your title and labels! This is totally possible thanks to 2 main packages: ragg and showtext. The blog-post below should help you using any font in minutes.





Small multiples: facet_wrap() and facet_grid()

Small multiples is a very powerful dataviz technique. It split the chart window in many small similar charts: each represents a specific group of a categorical variable. The following post describes the main use cases using facet_wrap() and facet_grid() and should get you started quickly.

A set of pre-built themes

It is possible to customize any part of a ggplot2 chart thanks to the theme() function. Fortunately, heaps of pre-built themes are available, allowing to get a good style with one more line of code only. Here is a glimpse of the available themes. See code

4 Years In Tehran

Your first crash course isn't in Farsi but in logistics: getting a local SIM card, downloading VPNs to access the global internet, and learning that the biggest danger in this city of political tensions is, quite simply, the traffic. As one Iranian friend aptly warned a foreign visitor, the most treacherous obstacle is "crossing the street," where drivers see a zebra crossing as a suggestion to accelerate rather than slow down.

Tehran climbs up the slope of the Alborz Mountains. You quickly learn that altitude correlates directly with wealth and social liberalism:

Tehran is visually defined by the massive Alborz mountain range to its north, a constant, majestic presence. Living here, one quickly understands the sharp geographic and socioeconomic divides.

Related chart types


4 Years In Tehran
Ggplot2
4 Years In Tehran
Animation
4 Years In Tehran
Interactivity
4 Years In Tehran
3D
4 Years In Tehran
Caveats
4 Years In Tehran
Data art