1. Turn a stacked bar chart into a pie chart using coord_polar().

A pie chart is a stacked bar chart with the addition of polar coordinates. Take this stacked bar chart with a single category.

suppressPackageStartupMessages(library(tidyverse))
package 㤼㸱tidyverse㤼㸲 was built under R version 3.6.3
ggplot(mpg, aes(x = factor(1), fill = drv)) +
  geom_bar()

Now add coord_polar(theta="y") to create pie chart.

ggplot(mpg, aes(x = factor(1), fill = drv)) +
  geom_bar(width = 1) +
  coord_polar(theta = "y")

The argument theta = "y" maps y to the angle of each section. If coord_polar() is specified without theta = "y", then the resulting plot is called a bulls-eye chart.

ggplot(mpg, aes(x = factor(1), fill = drv)) +
  geom_bar(width = 1) +
  coord_polar()

2. What does labs() do? Read the documentation.

The labs function adds axis titles, plot titles, and a caption to the plot.

ggplot(data = mpg, mapping = aes(x = class, y = hwy)) +
  geom_boxplot() +
  coord_flip() +
  labs(
    y = "Highway MPG",
    x = "Class",
    title = "Highway MPG by car class",
    subtitle = "1999-2008",
    caption = "Source: http://fueleconomy.gov"
  )

The arguments to labs() are optional, so you can add as many or as few of these as are needed.

ggplot(data = mpg, mapping = aes(x = class, y = hwy)) +
  geom_boxplot() +
  coord_flip() +
  labs(
    y = "Highway MPG",
    x = "Year",
    title = "Highway MPG by car class"
  )

The labs() function is not the only function that adds titles to plots. The xlab(), ylab(), and x- and y-scale functions can add axis titles. The ggtitle() function adds plot titles.

3. What’s the difference between coord_quickmap() and coord_map()?

The coord_map() function uses map projections to project the three-dimensional Earth onto a two-dimensional plane. By default, coord_map() uses the Mercator projection. This projection is applied to all the geoms in the plot. The coord_quickmap() function uses an approximate but faster map projection. This approximation ignores the curvature of Earth and adjusts the map for the latitude/longitude ratio. The coord_quickmap() project is faster than coord_map() both because the projection is computationally easier, and unlike coord_map(), the coordinates of the individual geoms do not need to be transformed.

See the coord_map() documentation for more information on these functions and some examples.

4.What does the plot below tell you about the relationship between city and highway mpg? Why is coord_fixed() important? What does geom_abline() do?

The function coord_fixed() ensures that the line produced by geom_abline() is at a 45-degree angle. A 45-degree line makes it easy to compare the highway and city mileage to the case in which city and highway MPG were equal.

p <- ggplot(data = mpg, mapping = aes(x = cty, y = hwy)) +
  geom_point() +
  geom_abline()
p + coord_fixed()

If we didn’t include geom_coord(), then the line would no longer have an angle of 45 degrees.

p

On average, humans are best able to perceive differences in angles relative to 45 degrees. See Cleveland (1993), Cleveland, McGill, and McGill (1988), and Heer and Agrawala (2006) for discussion on how the aspect ratio of a plot affects perception of the values it encodes, evidence that 45-degrees is generally optimal, and methods to calculate the an aspect ratio to achieve it. The function ggthemes::bank_slopes() will calculate the optimal aspect ratio to bank slopes to 45-degrees.

LS0tDQp0aXRsZTogIkNvb3JkaW5hdGUgc3lzdGVtcyBkZW1vIg0Kb3V0cHV0OiANCiAgaHRtbF9ub3RlYm9vazoNCiAgICB0b2M6IHRydWUNCiAgICB0b2NfZmxvYXQ6IHRydWUNCi0tLQ0KDQojIyMgMS4gVHVybiBhIHN0YWNrZWQgYmFyIGNoYXJ0IGludG8gYSBwaWUgY2hhcnQgdXNpbmcgYGNvb3JkX3BvbGFyKClgLg0KDQpBIHBpZSBjaGFydCBpcyBhIHN0YWNrZWQgYmFyIGNoYXJ0IHdpdGggdGhlIGFkZGl0aW9uIG9mIHBvbGFyIGNvb3JkaW5hdGVzLiBUYWtlIHRoaXMgc3RhY2tlZCBiYXIgY2hhcnQgd2l0aCBhIHNpbmdsZSBjYXRlZ29yeS4NCg0KYGBge3Igc3RhY2tlZH0NCnN1cHByZXNzUGFja2FnZVN0YXJ0dXBNZXNzYWdlcyhsaWJyYXJ5KHRpZHl2ZXJzZSkpDQpnZ3Bsb3QobXBnLCBhZXMoeCA9IGZhY3RvcigxKSwgZmlsbCA9IGRydikpICsNCiAgZ2VvbV9iYXIoKQ0KYGBgDQoNCk5vdyBhZGQgYGNvb3JkX3BvbGFyKHRoZXRhPSJ5IilgIHRvIGNyZWF0ZSBwaWUgY2hhcnQuDQoNCmBgYHtyIHBpZX0NCmdncGxvdChtcGcsIGFlcyh4ID0gZmFjdG9yKDEpLCBmaWxsID0gZHJ2KSkgKw0KICBnZW9tX2Jhcih3aWR0aCA9IDEpICsNCiAgY29vcmRfcG9sYXIodGhldGEgPSAieSIpDQpgYGANCg0KVGhlIGFyZ3VtZW50IGB0aGV0YSA9ICJ5ImAgbWFwcyBgeWAgdG8gdGhlIGFuZ2xlIG9mIGVhY2ggc2VjdGlvbi4gSWYgYGNvb3JkX3BvbGFyKClgIGlzIHNwZWNpZmllZCB3aXRob3V0IGB0aGV0YSA9ICJ5ImAsIHRoZW4gdGhlIHJlc3VsdGluZyBwbG90IGlzIGNhbGxlZCBhIGJ1bGxzLWV5ZSBjaGFydC4NCg0KYGBgYHtyIGJ1bGxzZXllfQ0KZ2dwbG90KG1wZywgYWVzKHggPSBmYWN0b3IoMSksIGZpbGwgPSBkcnYpKSArDQogIGdlb21fYmFyKHdpZHRoID0gMSkgKw0KICBjb29yZF9wb2xhcigpDQpgYGANCg0KDQojIyMgMi4gV2hhdCBkb2VzIGBsYWJzKClgIGRvPyBSZWFkIHRoZSBkb2N1bWVudGF0aW9uLg0KDQpUaGUgYGxhYnNgIGZ1bmN0aW9uIGFkZHMgYXhpcyB0aXRsZXMsIHBsb3QgdGl0bGVzLCBhbmQgYSBjYXB0aW9uIHRvIHRoZSBwbG90Lg0KDQpgYGB7ciBsYWJzfQ0KZ2dwbG90KGRhdGEgPSBtcGcsIG1hcHBpbmcgPSBhZXMoeCA9IGNsYXNzLCB5ID0gaHd5KSkgKw0KICBnZW9tX2JveHBsb3QoKSArDQogIGNvb3JkX2ZsaXAoKSArDQogIGxhYnMoDQogICAgeSA9ICJIaWdod2F5IE1QRyIsDQogICAgeCA9ICJDbGFzcyIsDQogICAgdGl0bGUgPSAiSGlnaHdheSBNUEcgYnkgY2FyIGNsYXNzIiwNCiAgICBzdWJ0aXRsZSA9ICIxOTk5LTIwMDgiLA0KICAgIGNhcHRpb24gPSAiU291cmNlOiBodHRwOi8vZnVlbGVjb25vbXkuZ292Ig0KICApDQpgYGANCg0KVGhlIGFyZ3VtZW50cyB0byBgbGFicygpYCBhcmUgb3B0aW9uYWwsIHNvIHlvdSBjYW4gYWRkIGFzIG1hbnkgb3IgYXMgZmV3IG9mIHRoZXNlIGFzIGFyZSBuZWVkZWQuDQoNCmBgYHtyIG9wdGlsYWJzfQ0KZ2dwbG90KGRhdGEgPSBtcGcsIG1hcHBpbmcgPSBhZXMoeCA9IGNsYXNzLCB5ID0gaHd5KSkgKw0KICBnZW9tX2JveHBsb3QoKSArDQogIGNvb3JkX2ZsaXAoKSArDQogIGxhYnMoDQogICAgeSA9ICJIaWdod2F5IE1QRyIsDQogICAgeCA9ICJZZWFyIiwNCiAgICB0aXRsZSA9ICJIaWdod2F5IE1QRyBieSBjYXIgY2xhc3MiDQogICkNCmBgYA0KDQpUaGUgYGxhYnMoKWAgZnVuY3Rpb24gaXMgbm90IHRoZSBvbmx5IGZ1bmN0aW9uIHRoYXQgYWRkcyB0aXRsZXMgdG8gcGxvdHMuIFRoZSBgeGxhYigpYCwgYHlsYWIoKWAsIGFuZCB4LSBhbmQgeS1zY2FsZSBmdW5jdGlvbnMgY2FuIGFkZCBheGlzIHRpdGxlcy4gVGhlIGBnZ3RpdGxlKClgIGZ1bmN0aW9uIGFkZHMgcGxvdCB0aXRsZXMuDQoNCiMjIyAzLiBXaGF04oCZcyB0aGUgZGlmZmVyZW5jZSBiZXR3ZWVuIGBjb29yZF9xdWlja21hcCgpYCBhbmQgYGNvb3JkX21hcCgpP2ANCg0KVGhlIGBjb29yZF9tYXAoKWAgZnVuY3Rpb24gdXNlcyBtYXAgcHJvamVjdGlvbnMgdG8gcHJvamVjdCB0aGUgdGhyZWUtZGltZW5zaW9uYWwgRWFydGggb250byBhIHR3by1kaW1lbnNpb25hbCBwbGFuZS4gQnkgZGVmYXVsdCwgYGNvb3JkX21hcCgpYCB1c2VzIHRoZSBbTWVyY2F0b3IgcHJvamVjdGlvbl0oaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvTWVyY2F0b3JfcHJvamVjdGlvbikuIFRoaXMgcHJvamVjdGlvbiBpcyBhcHBsaWVkIHRvIGFsbCB0aGUgZ2VvbXMgaW4gdGhlIHBsb3QuIFRoZSBgY29vcmRfcXVpY2ttYXAoKWAgZnVuY3Rpb24gdXNlcyBhbiBhcHByb3hpbWF0ZSBidXQgZmFzdGVyIG1hcCBwcm9qZWN0aW9uLiBUaGlzIGFwcHJveGltYXRpb24gaWdub3JlcyB0aGUgY3VydmF0dXJlIG9mIEVhcnRoIGFuZCBhZGp1c3RzIHRoZSBtYXAgZm9yIHRoZSBsYXRpdHVkZS9sb25naXR1ZGUgcmF0aW8uIFRoZSBgY29vcmRfcXVpY2ttYXAoKWAgcHJvamVjdCBpcyBmYXN0ZXIgdGhhbiBgY29vcmRfbWFwKClgIGJvdGggYmVjYXVzZSB0aGUgcHJvamVjdGlvbiBpcyBjb21wdXRhdGlvbmFsbHkgZWFzaWVyLCBhbmQgdW5saWtlIGBjb29yZF9tYXAoKWAsIHRoZSBjb29yZGluYXRlcyBvZiB0aGUgaW5kaXZpZHVhbCBnZW9tcyBkbyBub3QgbmVlZCB0byBiZSB0cmFuc2Zvcm1lZC4NCg0KU2VlIHRoZSBbY29vcmRfbWFwKCldKGh0dHBzOi8vZ2dwbG90Mi50aWR5dmVyc2Uub3JnL3JlZmVyZW5jZS9jb29yZF9tYXAuaHRtbCkgZG9jdW1lbnRhdGlvbiBmb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiB0aGVzZSBmdW5jdGlvbnMgYW5kIHNvbWUgZXhhbXBsZXMuDQoNCiMjIyA0LldoYXQgZG9lcyB0aGUgcGxvdCBiZWxvdyB0ZWxsIHlvdSBhYm91dCB0aGUgcmVsYXRpb25zaGlwIGJldHdlZW4gY2l0eSBhbmQgaGlnaHdheSBtcGc/IFdoeSBpcyBgY29vcmRfZml4ZWQoKWAgaW1wb3J0YW50PyBXaGF0IGRvZXMgYGdlb21fYWJsaW5lKClgIGRvPw0KDQpUaGUgZnVuY3Rpb24gYGNvb3JkX2ZpeGVkKClgIGVuc3VyZXMgdGhhdCB0aGUgbGluZSBwcm9kdWNlZCBieSBgZ2VvbV9hYmxpbmUoKWAgaXMgYXQgYSA0NS1kZWdyZWUgYW5nbGUuIEEgNDUtZGVncmVlIGxpbmUgbWFrZXMgaXQgZWFzeSB0byBjb21wYXJlIHRoZSBoaWdod2F5IGFuZCBjaXR5IG1pbGVhZ2UgdG8gdGhlIGNhc2UgaW4gd2hpY2ggY2l0eSBhbmQgaGlnaHdheSBNUEcgd2VyZSBlcXVhbC4NCg0KYGBge3IgZml4ZWRjb29yZH0NCnAgPC0gZ2dwbG90KGRhdGEgPSBtcGcsIG1hcHBpbmcgPSBhZXMoeCA9IGN0eSwgeSA9IGh3eSkpICsNCiAgZ2VvbV9wb2ludCgpICsNCiAgZ2VvbV9hYmxpbmUoKQ0KcCArIGNvb3JkX2ZpeGVkKCkNCmBgYA0KDQpJZiB3ZSBkaWRu4oCZdCBpbmNsdWRlIGBnZW9tX2Nvb3JkKClgLCB0aGVuIHRoZSBsaW5lIHdvdWxkIG5vIGxvbmdlciBoYXZlIGFuIGFuZ2xlIG9mIDQ1IGRlZ3JlZXMuDQoNCmBgYHtyIHB9DQpwDQpgYGANCg0KT24gYXZlcmFnZSwgaHVtYW5zIGFyZSBiZXN0IGFibGUgdG8gcGVyY2VpdmUgZGlmZmVyZW5jZXMgaW4gYW5nbGVzIHJlbGF0aXZlIHRvIDQ1IGRlZ3JlZXMuIFNlZSBDbGV2ZWxhbmQgKFsxOTkzXShodHRwczovL2RvaS5vcmcvMTAuMTA4MC8xMDYxODYwMC4xOTkzLjEwNDc0NjE2KSksIENsZXZlbGFuZCwgTWNHaWxsLCBhbmQgTWNHaWxsIChbMTk4OF0oaHR0cHM6Ly93d3cuanN0b3Iub3JnL3N0YWJsZS8yMjg4ODQzKSksIGFuZCBIZWVyIGFuZCBBZ3Jhd2FsYSAoWzIwMDZdKGh0dHBzOi8vZG9pLm9yZy8xMC4xMTA5L1RWQ0cuMjAwNi4xNjMpKSBmb3IgZGlzY3Vzc2lvbiBvbiBob3cgdGhlIGFzcGVjdCByYXRpbyBvZiBhIHBsb3QgYWZmZWN0cyBwZXJjZXB0aW9uIG9mIHRoZSB2YWx1ZXMgaXQgZW5jb2RlcywgZXZpZGVuY2UgdGhhdCA0NS1kZWdyZWVzIGlzIGdlbmVyYWxseSBvcHRpbWFsLCBhbmQgbWV0aG9kcyB0byBjYWxjdWxhdGUgdGhlIGFuIGFzcGVjdCByYXRpbyB0byBhY2hpZXZlIGl0LiBUaGUgZnVuY3Rpb24gYGdndGhlbWVzOjpiYW5rX3Nsb3BlcygpYCB3aWxsIGNhbGN1bGF0ZSB0aGUgb3B0aW1hbCBhc3BlY3QgcmF0aW8gdG8gYmFuayBzbG9wZXMgdG8gNDUtZGVncmVlcy4NCg==