Plotting with ggplot

We’ll be using the diamonds dataset for practice this week. It comes with the dplyr package, so make sure to run the set up chunk above before doing anything else.

Review the basics

Look at the dataset before you do anything else. You’ll need to know the column names and types before plotting

head(diamonds)
## # A tibble: 6 x 10
##   carat cut       color clarity depth table price     x     y     z
##   <dbl> <ord>     <ord> <ord>   <dbl> <dbl> <int> <dbl> <dbl> <dbl>
## 1 0.23  Ideal     E     SI2      61.5    55   326  3.95  3.98  2.43
## 2 0.21  Premium   E     SI1      59.8    61   326  3.89  3.84  2.31
## 3 0.23  Good      E     VS1      56.9    65   327  4.05  4.07  2.31
## 4 0.290 Premium   I     VS2      62.4    58   334  4.2   4.23  2.63
## 5 0.31  Good      J     SI2      63.3    58   335  4.34  4.35  2.75
## 6 0.24  Very Good J     VVS2     62.8    57   336  3.94  3.96  2.48

Plot a scatterplot with depth on the x-axis and table on the y-axis.

ggplot(diamonds, aes(x = depth, y = table)) + geom_point()

Now, with the same variables, add color by cut.

ggplot(diamonds, aes(x = depth, y = table, color = cut)) + geom_point()

Make boxplots for prices at each cut.

ggplot(diamonds, aes(x = cut, y = price)) + geom_boxplot()

Make a barplot for diamond color.

ggplot(diamonds, aes(x = color)) + geom_bar()

Free Plotting

Plot the columns listed using whatever type of plot and any extras you’d like.

All the answers in this section are guidelines; as long as you got a plot out, you did it.


price

ggplot(diamonds, aes(x = price)) + geom_histogram()
## `stat_bin()` using `bins = 30`. Pick better value with `binwidth`.

carat, clarity

ggplot(diamonds, aes(x = carat, fill = clarity)) + geom_density(alpha = 0.5)

cut, price

ggplot(diamonds, aes(x = cut, y = price, fill = cut)) + geom_violin(alpha = 0.8)

cut, color, price

ggplot(diamonds, aes(x = color, y = price, fill = color)) + geom_boxplot(alpha = 0.8) + facet_grid(~ cut)

Challenge Questions

Make a scatter plot for price vs. carat, colored with viridis by depth, and with partial transparency.

ggplot(diamonds, aes(x = price, y = carat, color = depth)) + geom_point(alpha = 0.5) + scale_color_viridis()

Make density plots for price, faceted by clarity and filled by clarity using viridis.

ggplot(diamonds, aes(x = price, fill = clarity)) + 
  geom_density() + 
  scale_fill_viridis_d() + 
  facet_wrap(~ clarity)