By: Lawrence Lo https://lawrencelo.weebly.com/ Email: ollecnerwal180@gmail.com

These are notes from a ggplot2 presenation: https://www.youtube.com/watch?v=HeqHMM4ziXA&t=539s. This notebook gives the first few examples of using the ‘qplot’ function. The primary purpose of this document is to test R-notebook publishing online.

Let’s call the ‘ggplot2’ library and examine the first few rows of the sample data within the library, ‘mpg’.

library(ggplot2)
head(mpg)

The ‘str’ function gives some basic information of the variables in the data.

str(mpg)
Classes ‘tbl_df’, ‘tbl’ and 'data.frame':   234 obs. of  11 variables:
 $ manufacturer: chr  "audi" "audi" "audi" "audi" ...
 $ model       : chr  "a4" "a4" "a4" "a4" ...
 $ displ       : num  1.8 1.8 2 2 2.8 2.8 3.1 1.8 1.8 2 ...
 $ year        : int  1999 1999 2008 2008 1999 1999 2008 1999 1999 2008 ...
 $ cyl         : int  4 4 4 4 6 6 6 4 4 4 ...
 $ trans       : chr  "auto(l5)" "manual(m5)" "manual(m6)" "auto(av)" ...
 $ drv         : chr  "f" "f" "f" "f" ...
 $ cty         : int  18 21 20 21 16 18 18 18 16 20 ...
 $ hwy         : int  29 29 31 30 26 26 27 26 25 28 ...
 $ fl          : chr  "p" "p" "p" "p" ...
 $ class       : chr  "compact" "compact" "compact" "compact" ...

The ‘qplot’ function is simplified, easy to use function that can produce plots within a single function call. Here is a basic scatterplot of displacement (‘disp’), an indicator of engine size, against a car’s highway mileage (‘hwy’)

qplot(displ, hwy, data = mpg)

Adding a ‘color’ argument to the function call can now specifiy which cars are 4-wheel drive, rear-wheal, or front-wheel drive.

qplot(displ, hwy, data = mpg, color = drv)

Here we use the ‘geom’ argument to add other geometric features to the plot. Here we add a loess-smoothed line showing a trend with 95% confidence intervals.

qplot(displ, hwy, data = mpg, geom = c("point","smooth"))

We can use ‘qplot’ to generate a variety of plot types, including histograms. Let’s examine the distribution of cars by mileage, separating them by drive-type.

qplot(hwy, data = mpg, fill = drv)

Instead of including the drive-type variable divided by color within a single variable, we can create faceted or paneled plots. The facets argument should take a ‘row~column’ specification

Here is the same engine size by mileage scatterplot divided into drive-types by columned facets rather than color.

qplot(displ, hwy, data = mpg, facets = .~drv)

We can approach the histogram plot similarly, dividing drive-type by rowed plots.

qplot(hwy, data = mpg, facets = drv~.)

LS0tDQp0aXRsZTogIkJhc2ljIGV4YW1wbGVzIG9mIHRoZSAncXBsb3QnIGZ1bmN0aW9uIg0Kb3V0cHV0OiBodG1sX25vdGVib29rDQotLS0NCg0KQnk6IExhd3JlbmNlIExvDQpodHRwczovL2xhd3JlbmNlbG8ud2VlYmx5LmNvbS8NCkVtYWlsOiBvbGxlY25lcndhbDE4MEBnbWFpbC5jb20NCg0KVGhlc2UgYXJlIG5vdGVzIGZyb20gYSBnZ3Bsb3QyIHByZXNlbmF0aW9uOiBodHRwczovL3d3dy55b3V0dWJlLmNvbS93YXRjaD92PUhlcUhNTTR6aVhBJnQ9NTM5cy4gVGhpcyBub3RlYm9vayBnaXZlcyB0aGUgZmlyc3QgZmV3IGV4YW1wbGVzIG9mIHVzaW5nIHRoZSAncXBsb3QnIGZ1bmN0aW9uLiAgVGhlIHByaW1hcnkgcHVycG9zZSBvZiB0aGlzIGRvY3VtZW50IGlzIHRvIHRlc3QgUi1ub3RlYm9vayBwdWJsaXNoaW5nIG9ubGluZS4NCg0KTGV0J3MgY2FsbCB0aGUgJ2dncGxvdDInIGxpYnJhcnkgYW5kIGV4YW1pbmUgdGhlIGZpcnN0IGZldyByb3dzIG9mIHRoZSBzYW1wbGUgZGF0YSB3aXRoaW4gdGhlIGxpYnJhcnksICdtcGcnLg0KDQpgYGB7cn0NCmxpYnJhcnkoZ2dwbG90MikNCmhlYWQobXBnKQ0KYGBgDQoNClRoZSAnc3RyJyBmdW5jdGlvbiBnaXZlcyBzb21lIGJhc2ljIGluZm9ybWF0aW9uIG9mIHRoZSB2YXJpYWJsZXMgaW4gdGhlIGRhdGEuDQoNCmBgYHtyfQ0Kc3RyKG1wZykNCmBgYA0KDQoNClRoZSAncXBsb3QnIGZ1bmN0aW9uIGlzIHNpbXBsaWZpZWQsIGVhc3kgdG8gdXNlIGZ1bmN0aW9uIHRoYXQgY2FuIHByb2R1Y2UgcGxvdHMgd2l0aGluIGEgc2luZ2xlIGZ1bmN0aW9uIGNhbGwuICBIZXJlIGlzIGEgYmFzaWMgc2NhdHRlcnBsb3Qgb2YgZGlzcGxhY2VtZW50ICgnZGlzcCcpLCBhbiBpbmRpY2F0b3Igb2YgZW5naW5lIHNpemUsIGFnYWluc3QgYSBjYXIncyBoaWdod2F5IG1pbGVhZ2UgKCdod3knKQ0KDQpgYGB7cn0NCnFwbG90KGRpc3BsLCBod3ksIGRhdGEgPSBtcGcpDQpgYGANCg0KQWRkaW5nIGEgJ2NvbG9yJyBhcmd1bWVudCB0byB0aGUgZnVuY3Rpb24gY2FsbCBjYW4gbm93IHNwZWNpZml5IHdoaWNoIGNhcnMgYXJlIDQtd2hlZWwgZHJpdmUsIHJlYXItd2hlYWwsIG9yIGZyb250LXdoZWVsIGRyaXZlLg0KDQpgYGB7cn0NCnFwbG90KGRpc3BsLCBod3ksIGRhdGEgPSBtcGcsIGNvbG9yID0gZHJ2KQ0KYGBgDQoNCkhlcmUgd2UgdXNlIHRoZSAnZ2VvbScgYXJndW1lbnQgdG8gYWRkIG90aGVyIGdlb21ldHJpYyBmZWF0dXJlcyB0byB0aGUgcGxvdC4gIEhlcmUgd2UgYWRkIGEgbG9lc3Mtc21vb3RoZWQgbGluZSBzaG93aW5nIGEgdHJlbmQgd2l0aCA5NSUgY29uZmlkZW5jZSBpbnRlcnZhbHMuDQoNCmBgYHtyfQ0KcXBsb3QoZGlzcGwsIGh3eSwgZGF0YSA9IG1wZywgZ2VvbSA9IGMoInBvaW50Iiwic21vb3RoIikpDQpgYGANCg0KV2UgY2FuIHVzZSAncXBsb3QnIHRvIGdlbmVyYXRlIGEgdmFyaWV0eSBvZiBwbG90IHR5cGVzLCBpbmNsdWRpbmcgaGlzdG9ncmFtcy4gIExldCdzIGV4YW1pbmUgdGhlIGRpc3RyaWJ1dGlvbiBvZiBjYXJzIGJ5IG1pbGVhZ2UsIHNlcGFyYXRpbmcgdGhlbSBieSBkcml2ZS10eXBlLg0KDQpgYGB7cn0NCnFwbG90KGh3eSwgZGF0YSA9IG1wZywgZmlsbCA9IGRydikNCmBgYA0KDQoNCkluc3RlYWQgb2YgaW5jbHVkaW5nIHRoZSBkcml2ZS10eXBlIHZhcmlhYmxlIGRpdmlkZWQgYnkgY29sb3Igd2l0aGluIGEgc2luZ2xlIHZhcmlhYmxlLCB3ZSBjYW4gY3JlYXRlIGZhY2V0ZWQgb3IgcGFuZWxlZCBwbG90cy4gIFRoZSBmYWNldHMgYXJndW1lbnQgc2hvdWxkIHRha2UgYSAncm93fmNvbHVtbicgc3BlY2lmaWNhdGlvbg0KDQpIZXJlIGlzIHRoZSBzYW1lIGVuZ2luZSBzaXplIGJ5IG1pbGVhZ2Ugc2NhdHRlcnBsb3QgZGl2aWRlZCBpbnRvIGRyaXZlLXR5cGVzIGJ5IGNvbHVtbmVkIGZhY2V0cyByYXRoZXIgdGhhbiBjb2xvci4gIA0KDQpgYGB7cn0NCnFwbG90KGRpc3BsLCBod3ksIGRhdGEgPSBtcGcsIGZhY2V0cyA9IC5+ZHJ2KQ0KYGBgDQoNCldlIGNhbiBhcHByb2FjaCB0aGUgaGlzdG9ncmFtIHBsb3Qgc2ltaWxhcmx5LCBkaXZpZGluZyBkcml2ZS10eXBlIGJ5IHJvd2VkIHBsb3RzLg0KDQpgYGB7cn0NCnFwbG90KGh3eSwgZGF0YSA9IG1wZywgZmFjZXRzID0gZHJ2fi4pDQpgYGANCg0K