Perimeter of Ignorance

As A increases, so does C

“As the area of our knowledge increases, so too, does the perimeter of our ignorance” — Neil DeGrasse Tyson

One of the many quotables from one of the great science communicators. A key reason in selecting this quote is due to its graphical representation.

The visualization above shows how increasing area (\(A\)) leads to an increase in perimeter (\(C\)) by virtue of the increase in radius (\(r\)) which is the key component of both equations.

NB: Some who are particularly astute (or anal) might correctly highlight that paralleling ignorance to “perimeter” is slightly incorrect: it’s the area of the surrounding space - exclusive of the circle - that represents ignorance, and this area certainly decreases as the circle gets bigger .. but nobody likes a keener

Here’s the R code to create the visualization above using ggplot2, ggforce (for an easy circle geom), and viridis for colour pallette:

library("ggplot2")
library("ggforce")
library("viridis")

#data.frame that provides all the requisite data for plotting
circle <- data.frame(x = c(1, 7),
                     y = rep(2, 2),
                     r = c(3, 2),
                     type = ordered(c("More", "Less")))
#adding `area` (A) and `circumference` (C)
circle <- circle %>% 
        mutate(A = round(pi * (circle$r)^2, 1),
               C = round(2 * pi * (circle$r), 1))

#the vis
ggplot(data = circle) + 
        # the plot
        geom_circle(aes(x0 = x, y0 = y, r = r, fill = type), 
                    colour = "slategrey") + 
        annotate("text", x = circle$x, y = circle$y + 0.25, 
                 label = paste0("A ≈ ", circle$A, "u²"),
                 hjust = 0, 
                 colour = "slategrey") +
        annotate("text", x = circle$x, y = circle$y + circle$r + 0.25, 
                 label = paste0("C ≈ ", circle$C, "u"),
                 colour = "slategrey") +
        annotate("text", x = -1.8, y = -1.25, 
                 label = "Area==pi*r^2~~and~~Circumference==2*pi*r", 
                 parse = T,
                 hjust = 0, 
                 colour = "slategrey") +
        # a colour pallette from viridis
        scale_fill_viridis(discrete = T, option = "C") +
        coord_fixed() +
        # vis labels
        labs(x = "", y = "", fill = "Knowledge") +
        theme_bw() + 
        theme(legend.position = "bottom",
              axis.text = element_blank(),
              axis.ticks = element_blank(),
              panel.grid = element_blank(),
              plot.background = element_blank(),
              panel.border = element_blank())
Avatar
Khalil H Najafi
Artistically Scientific with Data

Randomly walking through a career in data science, understanding statistics (the plight is real), and hoping to leave a positive mark on the space(s) I occupy