1. What happens if you facet on a continuous variable?

Let’s see.

ggplot(mpg, aes(x = displ, y = hwy)) +
  geom_point() +
  facet_grid(. ~ cty)

The continuous variable is converted to a categorical variable, and the plot contains a facet for each distinct value.

2. What do the empty cells in plot with facet_grid(drv ~ cyl) mean? How do they relate to this plot?

ggplot(data = mpg) +
  geom_point(mapping = aes(x = drv, y = cyl))



ggplot(data = mpg) +
  geom_point(mapping = aes(x = hwy, y = cty)) +
  facet_grid(drv ~ cyl)

The empty cells (facets) in this plot are combinations of drv and cyl that have no observations. These are the same locations in the scatter plot of drv and cyl that have no plots.

3. What plots does the following code make? What does . do?

The symbol . ignores that dimension when faceting. For example, drv ~ . facet by values of drv on the y-axis.

ggplot(data = mpg) +
  geom_point(mapping = aes(x = displ, y = hwy)) +
  facet_grid(drv ~ .)

While, . ~ cyl will facet by values of cyl on the x-axis.

ggplot(data = mpg) +
  geom_point(mapping = aes(x = displ, y = hwy)) +
  facet_grid(. ~ cyl)

4. Take the first faceted plot in this section:

ggplot(data = mpg) +
  geom_point(mapping = aes(x = displ, y = hwy)) +
  facet_wrap(~class, nrow = 2)

5. What are the advantages to using faceting instead of the colour aesthetic? What are the disadvantages? How might the balance change if you had a larger dataset?

In the following plot the class variable is mapped to color.

ggplot(data = mpg) +
  geom_point(mapping = aes(x = displ, y = hwy, color = class))

Advantages of encoding class with facets instead of color include the ability to encode more distinct categories. For me, it is difficult to distinguish between the colors of "midsize" and "minivan".

Given human visual perception, the max number of colors to use when encoding unordered categorical (qualitative) data is nine, and in practice, often much less than that. Displaying observations from different categories on different scales makes it difficult to directly compare values of observations across categories. However, it can make it easier to compare the shape of the relationship between the x and y variables across categories.

Disadvantages of encoding the class variable with facets instead of the color aesthetic include the difficulty of comparing the values of observations between categories since the observations for each category are on different plots. Using the same x- and y-scales for all facets makes it easier to compare values of observations across categories, but it is still more difficult than if they had been displayed on the same plot. Since encoding class within color also places all points on the same plot, it visualizes the unconditional relationship between the x and y variables; with facets, the unconditional relationship is no longer visualized since the points are spread across multiple plots.

The benefits encoding a variable through facetting over color become more advantageous as either the number of points or the number of categories increase. In the former, as the number of points increases, there is likely to be more overlap.

It is difficult to handle overlapping points with color. Jittering will still work with color. But jittering will only work well if there are few points and the classes do not overlap much, otherwise, the colors of areas will no longer be distinct, and it will be hard to pick out the patterns of different categories visually. Transparency (alpha) does not work well with colors since the mixing of overlapping transparent colors will no longer represent the colors of the categories. Binning methods use already color to encode density, so color cannot be used to encode categories.

As noted before, as the number of categories increases, the difference between colors decreases, to the point that the color of categories will no longer be visually distinct.

6. Read ?facet_wrap. What does nrow do? What does ncol do? What other options control the layout of the individual panels? Why doesn’t facet_grid() have nrow and ncol variables?

The arguments nrow (ncol) determines the number of rows (columns) to use when laying out the facets. It is necessary since facet_wrap() only facets on one variable.

The nrow and ncol arguments are unnecessary for facet_grid() since the number of unique values of the variables specified in the function determines the number of rows and columns.

7. When using facet_grid() you should usually put the variable with more unique levels in the columns. Why?

There will be more space for columns if the plot is laid out horizontally (landscape).

LS0tDQp0aXRsZTogIkZhY2V0cyBkZW1vIg0Kb3V0cHV0OiANCiAgaHRtbF9ub3RlYm9vazoNCiAgICB0b2M6IHRydWUNCiAgICB0b2NfZmxvYXQ6IHRydWUNCi0tLQ0KDQpgYGB7ciBzZXR1cCwgaW5jbHVkZT1GQUxTRX0NCmtuaXRyOjpvcHRzX2NodW5rJHNldChlY2hvID0gVFJVRSkNCnN1cHByZXNzUGFja2FnZVN0YXJ0dXBNZXNzYWdlcyhsaWJyYXJ5KHRpZHl2ZXJzZSkpDQpgYGANCg0KIyMjIDEuIFdoYXQgaGFwcGVucyBpZiB5b3UgZmFjZXQgb24gYSBjb250aW51b3VzIHZhcmlhYmxlPw0KDQpMZXTigJlzIHNlZS4NCg0KYGBge3IgZmFjZXRjb250aW51b3VzfQ0KZ2dwbG90KG1wZywgYWVzKHggPSBkaXNwbCwgeSA9IGh3eSkpICsNCiAgZ2VvbV9wb2ludCgpICsNCiAgZmFjZXRfZ3JpZCguIH4gY3R5KQ0KYGBgDQoNClRoZSBjb250aW51b3VzIHZhcmlhYmxlIGlzIGNvbnZlcnRlZCB0byBhIGNhdGVnb3JpY2FsIHZhcmlhYmxlLCBhbmQgdGhlIHBsb3QgY29udGFpbnMgYSBmYWNldCBmb3IgZWFjaCBkaXN0aW5jdCB2YWx1ZS4NCg0KDQojIyMgMi4gV2hhdCBkbyB0aGUgZW1wdHkgY2VsbHMgaW4gcGxvdCB3aXRoIGBmYWNldF9ncmlkKGRydiB+IGN5bClgIG1lYW4/IEhvdyBkbyB0aGV5IHJlbGF0ZSB0byB0aGlzIHBsb3Q/DQoNCmBgYHtyIHJlbGF0ZX0NCmdncGxvdChkYXRhID0gbXBnKSArDQogIGdlb21fcG9pbnQobWFwcGluZyA9IGFlcyh4ID0gZHJ2LCB5ID0gY3lsKSkNCg0KDQpnZ3Bsb3QoZGF0YSA9IG1wZykgKw0KICBnZW9tX3BvaW50KG1hcHBpbmcgPSBhZXMoeCA9IGh3eSwgeSA9IGN0eSkpICsNCiAgZmFjZXRfZ3JpZChkcnYgfiBjeWwpDQpgYGANCg0KVGhlIGVtcHR5IGNlbGxzIChmYWNldHMpIGluIHRoaXMgcGxvdCBhcmUgY29tYmluYXRpb25zIG9mIGBkcnZgIGFuZCBgY3lsYCB0aGF0IGhhdmUgbm8gb2JzZXJ2YXRpb25zLiBUaGVzZSBhcmUgdGhlIHNhbWUgbG9jYXRpb25zIGluIHRoZSBzY2F0dGVyIHBsb3Qgb2YgYGRydmAgYW5kIGBjeWxgIHRoYXQgaGF2ZSBubyBwbG90cy4NCg0KIyMjIDMuIFdoYXQgcGxvdHMgZG9lcyB0aGUgZm9sbG93aW5nIGNvZGUgbWFrZT8gV2hhdCBkb2VzIGAuYCBkbz8NCg0KVGhlIHN5bWJvbCBgLmAgaWdub3JlcyB0aGF0IGRpbWVuc2lvbiB3aGVuIGZhY2V0aW5nLiBGb3IgZXhhbXBsZSwgYGRydiB+IC5gIGZhY2V0IGJ5IHZhbHVlcyBvZiBgZHJ2YCBvbiB0aGUgeS1heGlzLg0KDQpgYGB7ciBwZXJpb2R9DQpnZ3Bsb3QoZGF0YSA9IG1wZykgKw0KICBnZW9tX3BvaW50KG1hcHBpbmcgPSBhZXMoeCA9IGRpc3BsLCB5ID0gaHd5KSkgKw0KICBmYWNldF9ncmlkKGRydiB+IC4pDQpgYGANCg0KV2hpbGUsIGAuIH4gY3lsYCB3aWxsIGZhY2V0IGJ5IHZhbHVlcyBvZiBgY3lsYCBvbiB0aGUgeC1heGlzLg0KDQpgYGB7ciB4YXhpc30NCmdncGxvdChkYXRhID0gbXBnKSArDQogIGdlb21fcG9pbnQobWFwcGluZyA9IGFlcyh4ID0gZGlzcGwsIHkgPSBod3kpKSArDQogIGZhY2V0X2dyaWQoLiB+IGN5bCkNCmBgYA0KDQojIyMgNC4gVGFrZSB0aGUgZmlyc3QgZmFjZXRlZCBwbG90IGluIHRoaXMgc2VjdGlvbjoNCg0KYGBge3IgZmlyc3RmYWNldH0NCmdncGxvdChkYXRhID0gbXBnKSArDQogIGdlb21fcG9pbnQobWFwcGluZyA9IGFlcyh4ID0gZGlzcGwsIHkgPSBod3kpKSArDQogIGZhY2V0X3dyYXAofmNsYXNzLCBucm93ID0gMikNCmBgYA0KDQojIyMgNS4gV2hhdCBhcmUgdGhlIGFkdmFudGFnZXMgdG8gdXNpbmcgZmFjZXRpbmcgaW5zdGVhZCBvZiB0aGUgY29sb3VyIGFlc3RoZXRpYz8gV2hhdCBhcmUgdGhlIGRpc2FkdmFudGFnZXM/IEhvdyBtaWdodCB0aGUgYmFsYW5jZSBjaGFuZ2UgaWYgeW91IGhhZCBhIGxhcmdlciBkYXRhc2V0Pw0KDQpJbiB0aGUgZm9sbG93aW5nIHBsb3QgdGhlIGNsYXNzIHZhcmlhYmxlIGlzIG1hcHBlZCB0byBjb2xvci4NCg0KYGBge3IgY2xhc3Njb2xvcn0NCmdncGxvdChkYXRhID0gbXBnKSArDQogIGdlb21fcG9pbnQobWFwcGluZyA9IGFlcyh4ID0gZGlzcGwsIHkgPSBod3ksIGNvbG9yID0gY2xhc3MpKQ0KYGBgDQoNCkFkdmFudGFnZXMgb2YgZW5jb2RpbmcgYGNsYXNzYCB3aXRoIGZhY2V0cyBpbnN0ZWFkIG9mIGNvbG9yIGluY2x1ZGUgdGhlIGFiaWxpdHkgdG8gZW5jb2RlIG1vcmUgZGlzdGluY3QgY2F0ZWdvcmllcy4gRm9yIG1lLCBpdCBpcyBkaWZmaWN1bHQgdG8gZGlzdGluZ3Vpc2ggYmV0d2VlbiB0aGUgY29sb3JzIG9mIGAibWlkc2l6ZSJgIGFuZCBgIm1pbml2YW4iYC4NCg0KR2l2ZW4gaHVtYW4gdmlzdWFsIHBlcmNlcHRpb24sIHRoZSBtYXggbnVtYmVyIG9mIGNvbG9ycyB0byB1c2Ugd2hlbiBlbmNvZGluZyB1bm9yZGVyZWQgY2F0ZWdvcmljYWwgKHF1YWxpdGF0aXZlKSBkYXRhIGlzIG5pbmUsIGFuZCBpbiBwcmFjdGljZSwgb2Z0ZW4gbXVjaCBsZXNzIHRoYW4gdGhhdC4gRGlzcGxheWluZyBvYnNlcnZhdGlvbnMgZnJvbSBkaWZmZXJlbnQgY2F0ZWdvcmllcyBvbiBkaWZmZXJlbnQgc2NhbGVzIG1ha2VzIGl0IGRpZmZpY3VsdCB0byBkaXJlY3RseSBjb21wYXJlIHZhbHVlcyBvZiBvYnNlcnZhdGlvbnMgYWNyb3NzIGNhdGVnb3JpZXMuIEhvd2V2ZXIsIGl0IGNhbiBtYWtlIGl0IGVhc2llciB0byBjb21wYXJlIHRoZSBzaGFwZSBvZiB0aGUgcmVsYXRpb25zaGlwIGJldHdlZW4gdGhlIHggYW5kIHkgdmFyaWFibGVzIGFjcm9zcyBjYXRlZ29yaWVzLg0KDQpEaXNhZHZhbnRhZ2VzIG9mIGVuY29kaW5nIHRoZSBgY2xhc3NgIHZhcmlhYmxlIHdpdGggZmFjZXRzIGluc3RlYWQgb2YgdGhlIGNvbG9yIGFlc3RoZXRpYyBpbmNsdWRlIHRoZSBkaWZmaWN1bHR5IG9mIGNvbXBhcmluZyB0aGUgdmFsdWVzIG9mIG9ic2VydmF0aW9ucyBiZXR3ZWVuIGNhdGVnb3JpZXMgc2luY2UgdGhlIG9ic2VydmF0aW9ucyBmb3IgZWFjaCBjYXRlZ29yeSBhcmUgb24gZGlmZmVyZW50IHBsb3RzLiBVc2luZyB0aGUgc2FtZSB4LSBhbmQgeS1zY2FsZXMgZm9yIGFsbCBmYWNldHMgbWFrZXMgaXQgZWFzaWVyIHRvIGNvbXBhcmUgdmFsdWVzIG9mIG9ic2VydmF0aW9ucyBhY3Jvc3MgY2F0ZWdvcmllcywgYnV0IGl0IGlzIHN0aWxsIG1vcmUgZGlmZmljdWx0IHRoYW4gaWYgdGhleSBoYWQgYmVlbiBkaXNwbGF5ZWQgb24gdGhlIHNhbWUgcGxvdC4gU2luY2UgZW5jb2RpbmcgY2xhc3Mgd2l0aGluIGNvbG9yIGFsc28gcGxhY2VzIGFsbCBwb2ludHMgb24gdGhlIHNhbWUgcGxvdCwgaXQgdmlzdWFsaXplcyB0aGUgdW5jb25kaXRpb25hbCByZWxhdGlvbnNoaXAgYmV0d2VlbiB0aGUgeCBhbmQgeSB2YXJpYWJsZXM7IHdpdGggZmFjZXRzLCB0aGUgdW5jb25kaXRpb25hbCByZWxhdGlvbnNoaXAgaXMgbm8gbG9uZ2VyIHZpc3VhbGl6ZWQgc2luY2UgdGhlIHBvaW50cyBhcmUgc3ByZWFkIGFjcm9zcyBtdWx0aXBsZSBwbG90cy4NCg0KVGhlIGJlbmVmaXRzIGVuY29kaW5nIGEgdmFyaWFibGUgdGhyb3VnaCBmYWNldHRpbmcgb3ZlciBjb2xvciBiZWNvbWUgbW9yZSBhZHZhbnRhZ2VvdXMgYXMgZWl0aGVyIHRoZSBudW1iZXIgb2YgcG9pbnRzIG9yIHRoZSBudW1iZXIgb2YgY2F0ZWdvcmllcyBpbmNyZWFzZS4gSW4gdGhlIGZvcm1lciwgYXMgdGhlIG51bWJlciBvZiBwb2ludHMgaW5jcmVhc2VzLCB0aGVyZSBpcyBsaWtlbHkgdG8gYmUgbW9yZSBvdmVybGFwLg0KDQpJdCBpcyBkaWZmaWN1bHQgdG8gaGFuZGxlIG92ZXJsYXBwaW5nIHBvaW50cyB3aXRoIGNvbG9yLiBKaXR0ZXJpbmcgd2lsbCBzdGlsbCB3b3JrIHdpdGggY29sb3IuIEJ1dCBqaXR0ZXJpbmcgd2lsbCBvbmx5IHdvcmsgd2VsbCBpZiB0aGVyZSBhcmUgZmV3IHBvaW50cyBhbmQgdGhlIGNsYXNzZXMgZG8gbm90IG92ZXJsYXAgbXVjaCwgb3RoZXJ3aXNlLCB0aGUgY29sb3JzIG9mIGFyZWFzIHdpbGwgbm8gbG9uZ2VyIGJlIGRpc3RpbmN0LCBhbmQgaXQgd2lsbCBiZSBoYXJkIHRvIHBpY2sgb3V0IHRoZSBwYXR0ZXJucyBvZiBkaWZmZXJlbnQgY2F0ZWdvcmllcyB2aXN1YWxseS4gVHJhbnNwYXJlbmN5IChgYWxwaGFgKSBkb2VzIG5vdCB3b3JrIHdlbGwgd2l0aCBjb2xvcnMgc2luY2UgdGhlIG1peGluZyBvZiBvdmVybGFwcGluZyB0cmFuc3BhcmVudCBjb2xvcnMgd2lsbCBubyBsb25nZXIgcmVwcmVzZW50IHRoZSBjb2xvcnMgb2YgdGhlIGNhdGVnb3JpZXMuIEJpbm5pbmcgbWV0aG9kcyB1c2UgYWxyZWFkeSBjb2xvciB0byBlbmNvZGUgZGVuc2l0eSwgc28gY29sb3IgY2Fubm90IGJlIHVzZWQgdG8gZW5jb2RlIGNhdGVnb3JpZXMuDQoNCkFzIG5vdGVkIGJlZm9yZSwgYXMgdGhlIG51bWJlciBvZiBjYXRlZ29yaWVzIGluY3JlYXNlcywgdGhlIGRpZmZlcmVuY2UgYmV0d2VlbiBjb2xvcnMgZGVjcmVhc2VzLCB0byB0aGUgcG9pbnQgdGhhdCB0aGUgY29sb3Igb2YgY2F0ZWdvcmllcyB3aWxsIG5vIGxvbmdlciBiZSB2aXN1YWxseSBkaXN0aW5jdC4NCg0KDQojIyMgNi4gUmVhZCBgP2ZhY2V0X3dyYXBgLiBXaGF0IGRvZXMgYG5yb3dgIGRvPyBXaGF0IGRvZXMgYG5jb2xgIGRvPyBXaGF0IG90aGVyIG9wdGlvbnMgY29udHJvbCB0aGUgbGF5b3V0IG9mIHRoZSBpbmRpdmlkdWFsIHBhbmVscz8gV2h5IGRvZXNu4oCZdCBgZmFjZXRfZ3JpZCgpYCBoYXZlIGBucm93YCBhbmQgYG5jb2xgIHZhcmlhYmxlcz8NCg0KVGhlIGFyZ3VtZW50cyBgbnJvd2AgKGBuY29sYCkgZGV0ZXJtaW5lcyB0aGUgbnVtYmVyIG9mIHJvd3MgKGNvbHVtbnMpIHRvIHVzZSB3aGVuIGxheWluZyBvdXQgdGhlIGZhY2V0cy4gSXQgaXMgbmVjZXNzYXJ5IHNpbmNlIGBmYWNldF93cmFwKClgIG9ubHkgZmFjZXRzIG9uIG9uZSB2YXJpYWJsZS4NCg0KVGhlIGBucm93YCBhbmQgYG5jb2xgIGFyZ3VtZW50cyBhcmUgdW5uZWNlc3NhcnkgZm9yIGBmYWNldF9ncmlkKClgIHNpbmNlIHRoZSBudW1iZXIgb2YgdW5pcXVlIHZhbHVlcyBvZiB0aGUgdmFyaWFibGVzIHNwZWNpZmllZCBpbiB0aGUgZnVuY3Rpb24gZGV0ZXJtaW5lcyB0aGUgbnVtYmVyIG9mIHJvd3MgYW5kIGNvbHVtbnMuDQoNCiMjIyA3LiBXaGVuIHVzaW5nIGBmYWNldF9ncmlkKClgIHlvdSBzaG91bGQgdXN1YWxseSBwdXQgdGhlIHZhcmlhYmxlIHdpdGggbW9yZSB1bmlxdWUgbGV2ZWxzIGluIHRoZSBjb2x1bW5zLiBXaHk/DQoNClRoZXJlIHdpbGwgYmUgbW9yZSBzcGFjZSBmb3IgY29sdW1ucyBpZiB0aGUgcGxvdCBpcyBsYWlkIG91dCBob3Jpem9udGFsbHkgKGxhbmRzY2FwZSku