From 07324d555c076fac828cedac8cc59a23d77d6caf Mon Sep 17 00:00:00 2001 From: Garrett Date: Mon, 30 Nov 2015 10:33:44 -0500 Subject: [PATCH] More work on visualization. Adds histogram diagrams. --- images/visualization-17.png | Bin 0 -> 26758 bytes images/visualization-18.png | Bin 0 -> 45772 bytes images/visualization-19.png | Bin 0 -> 29337 bytes images/visualization-20.png | Bin 0 -> 51660 bytes visualize.Rmd | 582 +++++++++++++++++++++++++++++------- 5 files changed, 473 insertions(+), 109 deletions(-) create mode 100644 images/visualization-17.png create mode 100644 images/visualization-18.png create mode 100644 images/visualization-19.png create mode 100644 images/visualization-20.png diff --git a/images/visualization-17.png b/images/visualization-17.png new file mode 100644 index 0000000000000000000000000000000000000000..550782a3c8906434b9f340b2ca780714d1f5463b GIT binary patch literal 26758 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 I2Ys&p4`UZXPXGV_ literal 0 HcmV?d00001 diff --git a/images/visualization-18.png b/images/visualization-18.png new file mode 100644 index 0000000000000000000000000000000000000000..46f536f2788368f712c3f74d21d90aa7bcdc4a37 GIT binary patch literal 45772 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

Ok%mj!wLAK(R)@;I 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 QQSe7uUPCTd=7#V80rfX%`Tzg` literal 0 HcmV?d00001 diff --git a/images/visualization-19.png b/images/visualization-19.png new file mode 100644 index 0000000000000000000000000000000000000000..27cb115641eba883912b47846998a97267f42b78 GIT binary patch literal 29337 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 nK4?_^0XcV~#m?9vEHH;o%hHgg_uX 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 + (mapping = aes()) ``` -The next few subsections will introduce several arguments (and functions) that you can add to the template. Each argument will come with a new set of options---and likely a new set of questions. Hold those questions for now. We will catalogue your options in Section 2. Use this section to become familiar with the `ggplot2` syntax. Once you do, the low level details of `ggplot2` will be easier to understand. +The remainder of this section will introduce several arguments (and functions) that you can add to the template. Each argument will come with a new set of options---and likely a new set of questions. Hold those questions for now. We will catalogue your options in Section 2. Use this section to become familiar with the `ggplot2` syntax. Once you do, the low level details of `ggplot2` will be easier to understand. #### Aesthetic Mappings @@ -130,7 +129,7 @@ Let's hypothesize that the cars are hybrids. One way to test this hypothesis is You can add a third value, like `class`, to a two dimensional scatterplot by mapping it to an _aesthetic_. -An aesthetic is a visual property of the points in your plot. Aesthetics include things like the size, the shape, or the color of your points. You can display a point (like the one below) in different ways by changing its aesthetic properties. +An aesthetic is a visual property of the points in your plot. Aesthetics include things like the size, the shape, or the color of your points. You can display a point (like the one below) in different ways by changing the values of its aesthetic properties. Since we already use the word "value" to describe data, let's use the word "level" to describe aesthetic properties. Here we change the levels of a point's size, shape, and color properties to make the point small, trianglular, or blue. `r bookdown::embed_png("images/visualization-2.png", dpi = 150)` @@ -201,7 +200,9 @@ ggplot(data = mpg) + The points appear in a grid because the `hwy` and `displ` measurements in `mpg` are rounded to the nearest integer and tenths values. This also explains why our graph appears to contain 126 points. Many points overlap each other because they have been rounded to the same values of `hwy` and `displ`. 108 points are hidden on top of other points located at the same value. -You can avoid this overplotting problem by setting the position argument of `geom_point()` to "jitter". `position = "jitter"` adds a small amount of random noise to each point. This spreads the points out since no two points are likely to receive the same amount of random noise. +You can avoid this overplotting problem by adjusting the position of the points. Each geom function uses a position argument to determine how to adjust the position of objects that overlap. + +The most useful type of adjustment for scatterplots is known as a "jitter". Jittering adds a small amount of random noise to each point. This spreads the points out since no two points are likely to receive the same amount of random noise. To jitter your points, add `position = "jitter"` to `geom_point`. ```{r} ggplot(data = mpg) + @@ -254,15 +255,13 @@ ggplot(data = diamonds) + geom_bar(mapping = aes(x = cut, fill = clarity)) ``` -Bar charts also use different position adjustments than scatterplots. Every geom function in `ggplot2` accepts a position argument, but it wouldn't make sense to set `position = "jitter"` for a bar chart. However, you could set `position = "dodge"` to create an unstacked bar chart. +Bar charts also use different position adjustments than scatterplots. It wouldn't make sense to set `position = "jitter"` for a bar chart. However, you could set `position = "dodge"` to create an unstacked bar chart. You'll learn about other position options in Section 2. ```{r} ggplot(data = diamonds) + geom_bar(mapping = aes(x = cut, fill = clarity), position = "dodge") ``` -See Section 2 to learn about other position options. - #### Stats Bar charts are interesting because they reveal something subtle about many types of plots. Consider our basic bar chart. @@ -289,12 +288,12 @@ Where does count come from? Some graphs, like scatterplots, plot the raw values of your data set. Other graphs, like bar charts, do not plot raw values at all. These graphs apply an algorithm to your data and then plot the results of the algorithm. Consider how often graphs do this. -* **bar charts** and **histograms** bin your data and then plot bin counts -* **smooth lines** (e.g. trend lines) apply a model to your data and then plot the model line +* **bar charts** and **histograms** bin your data and then plot bin counts, the number of points that fall in each bin. +* **smooth lines** (e.g. trend lines) apply a model to your data and then plot the model line. * **boxplots** calculate the quartiles of your data and then plot the quartiles as a box. * and so on. -`ggplot2` calls the algorithm that a graph uses to transform raw data a _stat_, which is short for statistical transformation. Each geom in `ggplot2` is associated with a stat that it uses to plot your data. `geom_bar()` uses the "bin" stat, which bins raw data and computes bin counts. `geom_point()` uses the "identity" stat, which applies the identity transformation, i.e. no transformation. +`ggplot2` calls the algorithm that a graph uses to transform raw data a _stat_, which is short for statistical transformation. Each geom in `ggplot2` is associated with a stat that it uses to plot your data. `geom_bar()` uses the "bin" stat, which bins raw data and computes bin counts. In contrast, `geom_point()` uses the "identity" stat, which applies the identity transformation, i.e. no transformation. You can change the stat that your geom uses. For example, you can ask `geom_bar()` to use the "identity" stat. This is a useful way to plot data that already lists the heights for each bar, like the data set below. @@ -336,7 +335,7 @@ Answer: A coxcomb plot is a bar chart plotted in polar coordinates. #### Coordinate systems -You can make coxcomb plots with `ggplot2` by first building a bar chart and then plotting it in polar coordinates. +You can make coxcomb plots with `ggplot2` by first building a bar chart and then plotting the chart in polar coordinates. To plot your data in polar coordinates, add `coord_polar()` to your plot call. Polar bar charts will look better if you also set the width parameter of `geom_bar()` to 1. This will ensure that no space appears between the bars. @@ -346,13 +345,15 @@ ggplot(data = diamonds) + coord_polar() ``` -You can add `coord_polar()` to any plot in `ggplot2` to draw the plot in polar coordinates. `ggplot2` will map the y variable to $r$ and your x variable to $\theta$. +You can add `coord_polar()` to any plot in `ggplot2` to draw the plot in polar coordinates. `ggplot2` will map your $y$ variable to $r$ and your $x$ variable to $\theta$. #### Facets Coxcomb plots are especially useful when you make many plots to compare against each other. Each coxcomb will act as a glyph that you can use to compare subgroups of data. -You can create a separate coxcomb plot for each subgroup in your data by _faceting_ your plot. For example, here we create a separate subplot for each level of the `clarity` variable. +You can create a separate coxcomb plot for each subgroup in your data by _faceting_ your plot. To facet your plot on a single discrete variable, add `facet_wrap()` to your plot call. The first argument of `facet_wrap()` is a formula, always a `~` followed by a variable name. + +For example, here we create a separate subplot for each level of the `clarity` variable. The first subplot displays the group of points that have the `clarity` value `I1`. The second subplot displays the group of points that have the `clarity` value `SI2`. And so on. ```{r fig.height = 7, fig.width = 7} ggplot(data = diamonds) + @@ -361,10 +362,6 @@ ggplot(data = diamonds) + facet_wrap( ~ clarity) ``` -The first subplot displays the group of points that have the `clarity` value `I1`. The second subplot displays the group of points that have the `clarity` value `SI2`. And so on. - -To facet your plot on a single discrete variable, add `facet_wrap()` to your plot call. The first argument of `facet_wrap()` is a formula, always a `~` followed by a variable name. - To facet your plot on the combinations of two variables, add `facet_grid()` to your plot call. The first argument of `facet_grid()` is also a formula. This time the formula should contain two variable names separated by a `~`. ```{r fig.height = 7, fig.width = 7} @@ -374,9 +371,9 @@ ggplot(data = diamonds) + facet_grid(color ~ clarity) ``` -Here the first subplot displays all of the points that have an `I1` code for `clarity` _and_ a `D` code for `color`. Don't be confused by the word color here; `color` is a variable name in the `diamonds` data set. `facet_grid(color ~ clarity)` is not invoking the color aesthetic. +Here the first subplot displays all of the points that have an `I1` code for `clarity` _and_ a `D` code for `color`. Don't be confused by the word color here; `color` is a variable name in the `diamonds` data set. It contains the codes `D`, `E`, `F`, `G`, `H`, `I`, and `J`. `facet_grid(color ~ clarity)` is not invoking the color aesthetic. -faceting works on more than just polar charts. You can add `facet_wrap()` or `facet_grid()` to any plot in `ggplot2`. For example, you could facet our original scatterplot. +Faceting works on more than just polar charts. You can add `facet_wrap()` or `facet_grid()` to any plot in `ggplot2`. For example, you could facet our original scatterplot. ```{r fig.height = 6, fig.width = 6} ggplot(data = mpg) + @@ -386,8 +383,6 @@ ggplot(data = mpg) + ### Bringing it together -> "Wax on. Wax off."---*The Karate Kid* (1984) - In this section, you learned more than how to make scatterplots, bar charts, and coxcomb plots; you learned a foundation that you can use to make _any_ type of plot with `ggplot2`. To see this, let's add position adjustments, stats, coordinate systems, and faceting to our code template. In `ggplot2`, each of these parameters will work with every plot and every geom. @@ -407,59 +402,66 @@ The template takes seven parameters, the bracketed words that appear in the temp The seven parameters in the template are connected by a powerful idea known as the _Grammar of Graphics_, a system for describing plots. The grammar shows that you can uniquely describe _any_ plot as a combination of---you guessed it: a data set, a geom, a set of mappings, a stat, a position adjustment, a coordinate system, and a faceting scheme. -Before we look at the grammar of graphics, let's take a look at the different choices that `ggplot2` offers for geoms, stats, position adjustments, coordinate systems, and facetting schemes. +Before we look at the grammar of graphics, let's take a look at the different geoms, stats, position adjustments, coordinate systems, and facetting schemes that you can use in `ggplot2`. ## The Vocabulary of `ggplot2` -`ggplot2` comes with 37 geom functions, 22 stats, eight coordinate systems, six position adjustments, two facetting schemes, and an uncounted number of aesthetics to map. Each of these components introduces new decisions for you to make and new dilemma's for you to consider. +`ggplot2` comes with 37 geom functions, 22 stats, eight coordinate systems, six position adjustments, two facetting schemes, and 28 aesthetics to map. Each of these options introduces a new set of details to think about. -Tackling these details can seem overwhelming to a new student, but you are ready. You understand the big picture that these details fits into, and you know how to make your own graphs, so you can try things out as you go. - -This section will explain all of the options that you can use to make graphs with `ggplot2`. Read through this section once, then return to it as a reference guide when you need it. +This section will guide you through the options, building your ability to make new types of plots as you go. Let's begin with the most noticeable part of a data visualization, the geom. ### Geoms -The geom of a plot is the geometric object that the plot uses to represent its data. People often describe plots by the type of geom that they use. For example, bar charts use bar geoms, line charts use line geoms, boxplots use boxplot geoms, and so on. +The geom of a plot is the geometric object that the plot uses to represent data. People often describe plots by the type of geom that the plot uses. For example, bar charts use bar geoms, line charts use line geoms, boxplots use boxplot geoms, and so on. -`ggplot2` provides 37 `geom_` functions that you can use to visualize your data. Each geom is particularly well suited for displaying a certain type of data or a certain type of relationship. +`ggplot2` provides 37 `geom_` functions that you can use to visualize your data. Each geom is particularly well suited for visualizing a certain type of data or a certain type of relationship. You can loosely classify geoms into groups that: -This section organizes geoms according to these relationships. It describes each geom and lists the aesthetics to use with the geom. +1. Visualize distributions +2. Visualize functions between two variables +3. Visualize correlations between two variables +4. Visualize correlations between three variables +5. Visualize maps +6. Display basic objects (graphical primitives) -Throughout the section we will rely on an important distinction between two types of variables: +Let's examine each group one at a time. For all of the geoms in `ggplot2`, you use the geom by inserting the geom's function into the `` spot in the code template in Section 1. -* A variable is **continuous** if you can arrange its values in order _and_ an infinite number of values exists between any two values of the variable. +*** - Numbers and date-times are examples of continuous variables. `ggplot2` will treat your variable as continuous if it is a numeric, integer, or a recognizable date-time class (but not a factor, see `?factor`). +*Tip*: Throughout this section, we will rely on a distinction between two types of variables: -* A variable is **discrete** if it is not continuous. Discrete variables can only contain a finite (or countably infinite) set of unique values. +* A variable is **continuous** if you can arrange its values in order _and_ an infinite number of values can exist between any two values of the variable. For example, numbers and date-times are continuous variables. `ggplot2` will treat your variable as continuous if it is a numeric, integer, or a recognizable date-time class (but not a factor, see `?factor`). - Character strings and boolean values are examples of discrete data. `ggplot2` will treat your variable as discrete if it is not a numeric, integer, or recognizable date-time structure. +* A variable is **discrete** if it is not continuous. Discrete variables can only contain a finite (or countably infinite) set of unique values. For example, character strings and boolean values are discrete variables. `ggplot2` will treat your variable as discrete if it is not a numeric, integer, or recognizable date-time class. + +*** #### Visualizing Distributions -Recall that a variable is a quantity, quality, or property whose value can change between measurements. +The first group of geoms visualizes the _distribution_ of the values in a variable. -This unique property---that the values of a variable can vary---gives the word "variable" its name. It also motivates all of data science. Scientists attempt to predict the value of variables and to understand what determines what those values will be. +Recall that a variable is a quantity, quality, or property whose value can change between measurements. This unique property---that the values of a variable can vary---gives the word "variable" its name. It also motivates all of data science. Scientists attempt to understand what determines the value of a variable. They then use that information to predict or control the value of the variable under a variety of circumstances. -One of the most useful tools in this quest are the values themselves. As you collect more data, the values of a variable will reveal which states of the variable are common, which are rare, and which are seemingly impossible. The pattern of the values that emerges is known as the variable's _distribution_. +One of the most useful tools in this quest are the values themselves, the values that you have already observed for a variable. These values reveal which states of the variable are common, which are rare, and which are seemingly impossible. The pattern of values that emerges as you collect large amounts of data is known as the variable's _distribution_. + +The distribution of a variable reveals information about the probabilities associated with the variable. As you collect more data, the proportion of observations that occur at a value (or in an interval) will match the probability that the variable will take that value (or take a value in that interval) in a future measurement. + +In theory, it is easy to visualize the distribution of a variable; simply display how many observations occur at each value of the variable. In practice, how you do this will depend on the type of variable that you wish to visualize. ##### Discrete distributions -To visualize the distribution of a discrete variable, count how many observations are associated with each value of the variable. You can compute these numbers quickly with R's `table()` function, but the easiest way to visualize the results is with `geom_bar()`. - -```{r} -table(diamonds$cut) -``` - -##### `geom_bar()` - -`geom_bar()` counts the number of observations that are associated with each value of a variable and displays the results as a bar. The height of each bar reveals the count of observations that are associated with the x value of the bar. +Use `geom_bar()` to visualize the distribution of a discrete variable. `geom_bar()` counts the number of observations that are associated with each value of the variable, and it displays the results as a series of bars. The height of each bar reveals the count of observations that are associated with the x value of the bar. ```{r} ggplot(data = diamonds) + geom_bar(mapping = aes(x = cut)) ``` +*** + +*Tip* - Since each of the geoms in this subsection visualizes the values of a single variable, you do not need to provide a $y$ aesthetic. + +*** + Useful aesthetics for `geom_bar()` are: * x (required) @@ -476,71 +478,433 @@ Useful position adjustments for `geom_bar()` are * "dodge" * "fill" +Useful stats for `geom_bar()` are + +* "bin" (default) +* "identity" (to map bar heights to a y variable) + +The `width` argument of `geom_bar()` controls the width of each bar. The bars will touch when you set `width = 1`. + +```{r} +ggplot(data = diamonds) + + geom_bar(mapping = aes(x = cut), width = 1) +``` + +*** + +*Tip*: You can compute the counts of a discrete variable quickly with R's `table()` function. These are the numbers that `geom_bar()` visualizes. +```{r} +table(diamonds$cut) +``` + +*** + ##### Continuous distributions -Plotting the distribution of a continuous variable is more tricky than plotting the distribution of a discrete variable. +The strategy of counting the number of observations at each value breaks down for continuous data. If your data is truly continuous, then no two observations will have the same value---so long as you measure the data precisely enough (e.g. without rounding to the _n_th decimal place). -To reveal the distribution, you must first _bin_ the range of the variable, which means to divide the range into equally spaced intervals. +To get around this, data scientists divide the range of a continuous variable into equally spaced intervals, a process called _binning_. -`r bookdown::embed_png("images/blank.png", dpi = 150)` +`r bookdown::embed_png("images/visualization-17.png", dpi = 150)` -You can then count the number of observations that fall into each bin. +They then count how many observations fall into each bin. -`r bookdown::embed_png("images/blank.png", dpi = 150)` +`r bookdown::embed_png("images/visualization-18.png", dpi = 150)` -And display them as a bar, or some other object. +And display the count as a bar, or some other object. -`r bookdown::embed_png("images/blank.png", dpi = 150)` +`r bookdown::embed_png("images/visualization-19.png", dpi = 150)` This method is temperamental because the appearance of the distribution can change dramatically if the bin size changes. As no bin size is "correct," you should explore several bin sizes when examining data. -Several geoms exist to help you, and they almost all use the "bin" stat to implement the above strategy. For each of these geoms, you can set the following arguments for "bin" to use: +`r bookdown::embed_png("images/visualization-20.png", dpi = 150)` -* binwidth - the width to use for the bins in the same units as the x variable -* origin - origin of the first bin interval -* right - if `TRUE` bins will be right closed (e.g. points that fall on the border of two bins will be counted with the bin to the left) -* breaks - a vector of actual bin breaks to use. If you set the breaks argument, it will overide the binwidth and origin arguments. +Several geoms exist to help you visualize continuous distributions. They almost all use the "bin" stat to implement the above strategy. For each of these geoms, you can set the following arguments for "bin" to use: -###### Histograms -###### Freqpoly -###### Dotplots -###### Density -###### Boxplots -##### Bivariate Distributions -###### bin2d -###### hex -###### density2d -###### rug -#### Visualizing Relationships -##### Discrete x, discrete y -###### Jitter -##### Discrete x, continuous y -###### Bar Charts -###### Boxplots -###### Dotplots -###### Violin plots -###### crossbar -###### errorbar -###### linerange -###### point range -##### Continuous x, continuous y -###### Points -###### Text -###### Jitter -###### Smooth -###### Quantile -##### Functions -###### line -###### area -###### step -##### Discrete x, discrete y, continuous z -###### raster -###### tile -##### Continuous x, continuous y, continuous z -###### contour -##### Maps +* `binwidth` - the width to use for the bins in the same units as the x variable +* `origin` - origin of the first bin interval +* `right` - if `TRUE` bins will be right closed (e.g. points that fall on the border of two bins will be counted with the bin to the left) +* `breaks` - a vector of actual bin breaks to use. If you set the breaks argument, it will overide the binwidth and origin arguments. -### Mappings +Use `geom_histogram()` to make a traditional histogram. The height of each bar reveals how many observations fall within the width of the bar. + +```{r} +ggplot(data = diamonds) + + geom_histogram(aes(x = carat)) +``` + +By default, `geom_histogram()` will divide the range of the variable into 30 equal length bins. The quickest way to change this behavior is to set the binwidth argument. + +```{r} +ggplot(data = diamonds) + + geom_histogram(aes(x = carat), binwidth = 1) +``` + +Notice how different binwidths reveal different information. The plot above shows that the availability of diamonds decreases quickly as carat size increases. The plot below shows that there are more diamonds than you would expect at whole carat sizes (and common fractions of carat sizes). Moreover, for each popular size, there are more diamonds that are slightly larger than the size than there are that are slightly smaller than the size. + + +```{r} +ggplot(data = diamonds) + + geom_histogram(aes(x = carat), binwidth = 0.01) +``` + +Useful aesthetics for `geom_histogram()` are: + +* x (required) +* alpha +* color +* fill +* linetype +* size +* weight + +Useful position adjustments for `geom_histogram()` are + +* "stack" (default) +* "fill" + +`geom_freqpoly()` uses a line to display the same information as `geom_histogram()`. You can think of `geom_freqpoly()` as drawing a line that connects the tops of the bars that would appear in a histogram. + +```{r message = FALSE, fig.show='hold', fig.width=4, fig.height=4} +ggplot(data = diamonds) + + geom_freqpoly(aes(x = carat)) + +ggplot(data = diamonds) + + geom_histogram(aes(x = carat)) +``` + +It is easier to compare levels of a third variable with `geom_freqpoly()` than with `geom_histogram()`. `geom_freqpoly()` displays the shape of the distribution faithfully for each subgroup because you can plot multiple lines in the same graph without adjusting their position. Notice that `geom_histogram()` must stack each new subgroup on top of the others, which obscures the shape of the distributions. + +```{r message = FALSE, fig.show='hold', fig.width=4, fig.height=4} +ggplot(data = diamonds) + + geom_freqpoly(aes(x = carat, color = cut)) + +ggplot(data = diamonds) + + geom_histogram(aes(x = carat, fill = cut)) +``` + +Useful aesthetics for `geom_freqpoly()` are: + +* x (required) +* y +* alpha +* color +* linetype +* size + +Although the name of `geom_freqpoly()` suggests that it draws a polygon, it actually draws a line. You can draw the same information as a true polygon (and thus fill in the area below the line) if you combine `geom_area()` with `stat = "bin"`. You will learn more about `geom_area()` in _Visualizing functions between two variables_. + +```{r} +ggplot(data = diamonds) + + geom_area(aes(x = carat, fill = cut), stat = "bin", position = "stack") +``` + +`geom_density()` plots a one dimensional kernel density estimate of a variable's distribution. The result is a smooth version of the information contained in a histogram or a freqpoly. + +```{r} +ggplot(data = diamonds) + + geom_density(aes(x = carat)) +``` + +`geom_density()` displays $density$---not $count$---on the y axis, which makes it easier to compare the shape of the distributions of multiple subgroups; the area under each curve will be normalized to one, no matter how many total observations occur in the subgroup. + +`geom_density()` does not use the binwidth argument. You can control the smoothness of the density with `adjust`, and you can select the kernel to use to estimate the density with `kernel`. Set kernel to one of "gaussian" (default), "epanechikov", "rectangular", "triangular", "biweight", "cosine", "optcosine". + +```{r} +ggplot(data = diamonds) + + geom_density(aes(x = carat, color = cut), kernel = "gaussian", adjust = 4) +``` + +Useful aesthetics for `geom_density()` are: + +* x (required) +* y +* alpha +* color +* fill +* linetype +* size + +Useful position adjustments for `geom_density()` are + +* "identity" (default) +* "stack" (when using the fill aesthetic) +* "fill" (when using the fill aesthetic) + +`geom_dotplot()` provides a final way to visualize distributions. This unique geom displays a point for each observation, but it stacks points that appear in the same bin on top of each other. The result is similar to a histogram, the height of each stack reveals the number of points in the stack. + +```{r} +ggplot(data = mpg) + + geom_dotplot(aes(x = displ), binwidth = 0.2) +``` + +Useful aesthetics for `geom_dotplot()` are: + +* x (required) +* y +* alpha +* color +* fill + +Useful arguments that apply to `geom_dotplot()` + +* `binaxis` - the axis to bin along ("x" or "y") +* `binwidth` - the interval width to use when binning +* `dotsize` - diameter of dots relative to binwidth +* `stackdir` - which direction to stack the dots ("up" (default), "down", "center", "centerwhole") +* `stackgroups` - Has the equivalent of `position = "stack"` when set to true. +* `stackratio` - how close to stack the dots. Values less than 1 cause dots to overlap, which shortens stacks. + +In practice, I find that `geom_dotplot()` works best with small data sets and takes a lot of tweaking of the binwidth, dotsize, and stackratio arguments to fit the dots within the graph (the stack heights depend entirely on the organization of the dots, which renders the y axis ambiguous). That said, dotplots can be useful as a learning aid. They provide an intuitive representation of a histogram. + +#### Visualize functions between two variables + +Distributions provide useful information about variables, but the information is general. By itself, a distribution cannot tell you how the value of a variable in one set of circumstances will differ from the value of the same variable in a different set of circumstances. + +_Covariation_ can provide more specific information. Covariation is a relationship between the values of two or more variables. + +To see how covariation works, consider two variables: the $volume$ of an object and its $temperature$. If the $volume$ of the object usually increases when the $temperature$ of the object increases, then you could use the value of $temperature$ to help predict the value of $volume$. + +You've probably heard that "correlation (covariation) does not prove causation." This is true, two variables can covary without one causing the other. However, covariation is often the first clue that two variables have a causal relationship. + +Visualization is one of the best ways to spot covariation. How you look for covariation will depend on the structural relationship between two variables. The simplest structure occurs when two continuous variables have a functional relationship, where each value of one variable corresponds to a single value of the second variable. + +In this scenario, covariation will appear as a pattern in the relationship. If two variables o not covary, their functional relationship will look like a random walk. + +The variables `date` and `unemploy` in the `economics` data set have a functional relationship. The `economics` data set comes with `ggplot2` and contains various economic indicators for the United States between 1967 and 2007. The `unemploy` variable measures the number of unemployed individuals in the United States in thousands. + +A scatterplot of the data reveals the functional relationship between `date` and `unemploy`. + +```{r} +ggplot(data = economics) + + geom_point(aes(x = date, y = unemploy)) +``` + +`geom_line()` makes the relationship clear. `geom_line()` creates a line chart, one of the most used---and most efficient---devices for visualizing a function. + +```{r} +ggplot(data = economics) + + geom_line(aes(x = date, y = unemploy)) +``` + +Useful aesthetics for `geom_line()` are: + +* x (required) +* y (required) +* alpha +* color +* linetype +* size + +Use `geom_step()` to turn a line chart into a step function. Here, the result will be easier to see with a subset of data. + +```{r} +ggplot(data = economics[1:150, ]) + + geom_step(aes(x = date, y = unemploy)) +``` + +Control the step direction by giving `geom_step()` a direction argument. `direction = "hv"` will make stairs that move horizontally then vertically to connect points. `direction = "vh"` will do the opposite. + +Useful aesthetics for `geom_step()` are: + +* x (required) +* y (required) +* alpha +* color +* linetype +* size + +`geom_area()` creates a line chart with a filled area under the line. + +```{r} +ggplot(data = economics) + + geom_area(aes(x = date, y = unemploy)) +``` + +Useful aesthetics for `geom_area()` are: + +* x (required) +* y (required) +* alpha +* color +* fill +* linetype +* size + +##### Visualize correlations between two variables + +Many variables do not have a functional relationship. As a result, a single value of one variable can correspond to multiple values of another variable. + +Height and weight are two variables that are often related, but do not have a functional relationship. You could examine a classroom of students and notice that three different students, with three different weights all have the same height, 5'4". In this case, there is not a one to one relationship between height and weight. + +The easiest way to plot the relationship between two variables is with a scatterplot, i.e. `geom_point()`. If the variables covary, a pattern will appear in the points. If they do not, the points will look like a random cloud of points. + +```{r} +ggplot(data = mpg) + + geom_point(mapping = aes(x = displ, y = hwy)) +``` + +Useful aesthetics for `geom_point()` are: + +* x (required) +* y (required) +* alpha +* color +* fill (for some shapes) +* shape +* size + +Useful position adjustments for `geom_point()` are: + +* "identity" (default) +* "jitter" + +In fact, the jitter adjustment is so useful that `ggplot2` provides the `geom_jitter()`, which is identical to `geom_point()` but comes with `position = "jitter"` by default. + +```{r} +ggplot(data = mpg) + + geom_jitter(mapping = aes(x = displ, y = hwy)) +``` + +`geom_jitter()` can be a useful way to visualize the distribution between two discrete variables. Can you tell why `geom_point()` would be less useful here? + +```{r} +ggplot(data = mpg) + + geom_jitter(mapping = aes(x = cyl, y = fl, color = fl)) +``` + +Use `geom_rug()` to visualize the distribution of each variable in the scatterplot. `geom_rug()` adds a tickmark along each axis for each value observed in the data. `geom_rug()` works best as a second layer in the plot (see Section 3 for more info on layers). + +```{r} +ggplot(data = mpg) + + geom_point(mapping = aes(x = displ, y = hwy)) + + geom_rug(mapping = aes(x = displ, y = hwy), position = "jitter") +``` + +Use the `sides` argument to control which axes to place a "rug" on. + +* `sides = "bl"` - (default) Places a rug on each axis +* `sides = "b"` - Places a rug on the bottom axis +* `sides = "l"` - Places a rug on the left axis + +Useful aesthetics for `geom_rug()` are: + +* x (required) +* y (required) +* alpha +* color +* linetype +* size + +Useful position adjustments for `geom_rug()` are: + +* "identity" (default) +* "jitter" + +Use `geom_text()` to display a label, instead of a point, for each observation in a scatterplot. `geom_text()` lets you add information to the scatterplot, but is less effective when you have many data points. + +```{r} +ggplot(data = mpg[sample(1:234, 10), ]) + + geom_text(mapping = aes(x = displ, y = hwy, label = class)) +``` + +Useful aesthetics for `geom_text()` are: + +* x (required) +* y (required) +* alpha +* angle +* color +* family +* fontface +* hjust +* label (`geom_text()` displays the values of this variable) +* lineheight +* linetype +* size +* vjust + +Control the appearance of the labels with the following arguments. You can also use each of these arguments as an aesthetic. To do so, set them inside the `aes()` call in `geom_text()`'s mapping argument. + +* `angle` - angle of text +* `family` - font family of text +* `fontface` - bold, italic, etc. +* `hjust` - horizontal adjustment +* `vjust`- vertical adjustment + +Scatterplots do not work well with large data sets because individual points will begin to occlude each other. As a result, you cannot tell where the mass of the data lies. Does a black region contain a single layer of points? Or hundreds of points stacked on top of each other. + +You can see this type of plotting in the `diamonds` data set. The data set only contains 53,940 points, but the points overplot each other in a way that we cannot fix with jittering. + +```{r} +ggplot(data = diamonds) + + geom_point(mapping = aes(x = carat, y = price)) +``` + +For large data, it is more useful to plot summary information that describes the raw data than it is to plot the raw data itself. Several geoms can help you do this. + +The simplest way to summarize covariance between two variables is with a model line. The model line displays the trend of the relationship between the variables. + +Use `geom_smooth()` to display a model line between any two variables. As with `geom_rug()`, `geom_smooth()` works well as a second layer for a plot (See Section 3 for details). + +```{r} +ggplot(data = diamonds) + + geom_point(mapping = aes(x = carat, y = price)) + + geom_smooth(mapping = aes(x = carat, y = price)) +``` + +`geom_smooth()` will add a loess line to your data if the data contains less than 1000 points, otherwise it will fit a general additive model to your data with a cubic regression spline, and plot the resulting model line. In either case, `geom_smooth()` will display a message in the console to tell you what it is doing. This is not a warning message; you do not need to worry when you see it. + +`geom_smooth()` will also plot a standard error band around the model line. You can remove the standard error band by setting the `se` argument of `geom_smooth()` to `FALSE`. + +Use the `model` argument of `geom_smooth()` to adda specific type of model line to your data. `model` takes the name of an R modeling function. `geom_smooth()` will use the function to calculate the model line. For example, the code below uses R's `lm()` function to fit a linear model line to the data. + +```{r} +ggplot(data = diamonds) + + geom_point(mapping = aes(x = carat, y = price)) + + geom_smooth(mapping = aes(x = carat, y = price), method = lm) +``` + +By default, `geom_smooth()` will use the formula `y ~ x` to model your data. You can modify this formula by setting the `formula` argument to a different formula. If you do this, be sure to refer to the variable on your $x$ axis as `x` and the variable on your $y$ axis as `y`, e.g. + +```{r} +ggplot(data = diamonds) + + geom_point(mapping = aes(x = carat, y = price)) + + geom_smooth(mapping = aes(x = carat, y = price), + method = lm, formula = y ~ poly(x, 4)) +``` + +Useful aesthetics for `geom_smooth()` are: + +* x (required) +* y (required) +* alpha +* color +* fill +* linetype +* size +* weight + +Useful arguments for `geom_smooth()` are: + +* `formula` - the formula to use in the smoothing function +* `fullrange` - Should the fit span the full range of the plot, or just the data? +* `level` - Confidence level to use for standard error ribbon +* `method` - Smoothing function to use, a model function in R +* `n` - The number of points to evaluate smoother at (defaults to 80) +* `se` - If TRUE` (the default), `geom_smooth()` will include a standard error ribbon + +Be careful, `geom_smooth()` will overlay a trend line on every data set, even if the underlying data is uncorrelated. You can avoid being fooled by also inspecting the raw data or calculating the correlation between your variables, e.g. `cor(diamonds$carat, diamonds$price)`. + + +##### Visualize correlations between three variables + +##### Visualize maps + +##### Display basic objects (graphical primitives) + + +#### Aesthetic Mappings Have you experimented with aesthetics? Great! Here are some things that you may have noticed.