ggplot2 —— Facets & Geometric objects

Facets

1. facet by one variable

The variable that you pass to facet_wrap() should be discrete.

> ggplot(data = mpg) + 
+     geom_point(mapping = aes(x = displ, y = hwy)) + 
+     facet_wrap(~ class, nrow = 4)  # row: n=4

nrow: facet in n rows
ncol: facet in n columns

2. facet by two variable

> ggplot(data = mpg)+
+ geom_point(mapping = aes(x = displ, y = hwy))+
+ facet_grid(drv ~ cyl)
3. not facet in the rows or columns dimension

use a . instead of a variable name

> ggplot(data = mpg)+
+     geom_point(mapping = aes(x = displ, y = hwy))+
+     facet_grid(. ~ cyl)
  • difference
> ggplot(data = mpg) + 
+     geom_point(mapping = aes(x = displ, y = hwy)) +
+     facet_grid(drv ~ .) # row

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

facet_grid(. ~ cyl)

Geometric objects

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

ggplot(data = mpg) + 
  geom_smooth(mapping = aes(x = displ, y = hwy))
point geom

smooth geom

1. linetype

geom_smooth() will draw a different line, with a different linetype, for each unique value of the variable that you map to linetype.

> ggplot(data = mpg) + 
+     geom_smooth(mapping = aes(x = displ, y = hwy, linetype = drv))

2. group

> ggplot(data = mpg) +
+     geom_smooth(mapping = aes(x = displ, y = hwy))
> ggplot(data = mpg) +
+     geom_smooth(mapping = aes(x = displ, y = hwy, group = drv))
> ggplot(data = mpg) +
+     geom_smooth(
+         mapping = aes(x = displ, y = hwy, color = drv),
+         show.legend = FALSE  #不显示图例
+     )

3. display multiple geoms in one plot

add multiple geom functions to ggplot():

> ggplot(data = mpg) + 
+     geom_point(mapping = aes(x = displ, y = hwy)) +
+     geom_smooth(mapping = aes(x = displ, y = hwy))


A better way !
ggplot2 will treat these mappings as global mappings that apply to each geom in the graph.

> ggplot(data = mpg, mapping = aes(x = displ, y = hwy)) + 
+     geom_point() + 
+     geom_smooth()
  • If you place mappings in a geom function, ggplot2 will treat them as local mappings for the layer. It will use these mappings to extend or overwrite the global mappings for that layer only.

This makes it possible to display different aesthetics in different layers.

> ggplot(data = mpg, mapping = aes(x = displ, y = hwy)) + 
+     geom_point(mapping = aes(color = class)) + 
+     geom_smooth()
  • You can use the same idea to specify different data for each layer. Our smooth line displays just a subset of the mpg dataset.

The subcompact cars. The local data argument in geom_smooth() overrides the global data argument in ggplot() for that layer only.

> library(dplyr)  #load dplyr !!! filter() is from dplyr
> ggplot(data = mpg, mapping = aes(x = displ, y = hwy)) + 
+     geom_point(mapping = aes(color = class)) + 
+     geom_smooth(data = filter(mpg, class == "subcompact"), se = FALSE)
This command selects only the subcompact cars.

Exercises

1. What geom would you use to draw a line chart? A boxplot? A histogram? An area chart?

A line chart

> ggplot(data = mpg)+
+ geom_line(mapping = aes(x = hwy, y = cty))
a line chart

A boxplot

> ggplot(data = mpg)+
+     geom_boxplot(mapping = aes(x = displ, y = hwy, group = class))
A boxplot

A histogram

> ggplot(data = mpg)+
+         geom_histogram(mapping = aes(x = hwy), bins = 30)  #条数是30
A histogram

An area chart

> ggplot(data = mpg)+
+    geom_area(mapping = aes(x = displ, y = hwy))
An area chart
2. Run this code in your head and predict what the output will look like. Then, run the code in R and check your predictions.
ggplot(data = mpg, mapping = aes(x = displ, y = hwy, color = drv)) + 
  geom_point() + 
  geom_smooth(se = FALSE)
se = FALSE
3. What does the se argument to geom_smooth() do?
> ggplot(data = mpg, mapping = aes(x = displ, y = hwy, color = drv)) + 
+     geom_point() + 
+     geom_smooth(se = TRUE)

se = TRUE

standard error(se):
The se parameter adds a standard error band to the fitted curve(添加的标准误差,默认TRUE)

4. show.legend = FALSE: 不显示图例
5. Recreate the R code necessary to generate the following graphs.
  • (1)
> ggplot(data = mpg, mapping = aes(x = displ, y = hwy)) + 
+        geom_point() + 
+        geom_smooth(se = FALSE)
  • (2)
> ggplot(data = mpg, mapping = aes(x = displ, y = hwy, group = drv))+
+      geom_point()+
+      geom_smooth(se = FALSE)
  • (3)
> ggplot(data = mpg, mapping = aes(x = displ, y = hwy, color = drv))+
+           geom_point()+
+           geom_smooth(se = FALSE)
  • (4)
#1
> ggplot(data = mpg)+
+ geom_point(mapping = aes(x = displ, y = hwy, color = drv))+
+ geom_smooth(mapping = aes(x = displ, y = hwy), se = FALSE)
#2
> ggplot(data = mpg, mapping = aes(x = displ, y = hwy))+
+ geom_point(mapping = aes(x = displ, y = hwy, color = drv))+
+ geom_smooth(se = FALSE)
  • (5)
> ggplot(data = mpg)+
+ geom_point(mapping = aes(x = displ, y = hwy, color = drv))+
+ geom_smooth(mapping = aes(x = displ, y = hwy, linetype = drv), se = FALSE)
  • (6)
> ggplot(data = mpg)+
+ geom_point(mapping = aes(x = displ, y = hwy, color = drv))
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容