Contents
0.1 Preface to the second edition . . . . . . . . . . . . . . . . . . . . . . . 3
0.2 Preface to the first edition . . . . . . . . . . . . . . . . . . . . . . . . 4
0.3 Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
0.4 About the author . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
0.5 How this book is organized? . . . . . . . . . . . . . . . . . . . . . . . 13
0.6 Book website . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
0.7 How to execute the R codes provided in this book? . . . . . . . . . . 18
I Basics of R and ggplot2 19
1 Introduction to R 20
1.1 Install R and RStudio . . . . . . . . . . . . . . . . . . . . . . . . . . 20
1.2 Arithmetics with R . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
1.3 Data types in R . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
1.4 Getting help with functions in R . . . . . . . . . . . . . . . . . . . . . 24
1.5 Installing and loading R packages . . . . . . . . . . . . . . . . . . . . 24
1.6 Importing your data into R . . . . . . . . . . . . . . . . . . . . . . . 26
1.7 Demo data sets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
1.8 Close your R/RStudio session . . . . . . . . . . . . . . . . . . . . . . 28
2 Introduction to ggplot2 29
2.1 What’s ggplot2? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
2.2 Type of graphs for data visualization . . . . . . . . . . . . . . . . . . 30
2.3 Install and load ggplot2 package . . . . . . . . . . . . . . . . . . . . . 31
2.4 Data format and preparation . . . . . . . . . . . . . . . . . . . . . . . 31
2.5 qplot() function: Draw quick plots . . . . . . . . . . . . . . . . . . . . 32
2.6 ggplot() function: Build plots piece by piece . . . . . . . . . . . . . . 35
2.7 Save ggplots . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
II Plot One Variable - X: Continuous or Discrete 40
2.8 Data format . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
2.9 Plot types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
3 Area Plots 43
4 Density Plots 45
4.1 Basic density plots . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
4.2 Change colors by groups . . . . . . . . . . . . . . . . . . . . . . . . . 46
5 Histogram Plots 49
5.1 Basic histogram plots . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
5.2 Change colors by groups . . . . . . . . . . . . . . . . . . . . . . . . . 51
6 Combine Histogram and Density Plots 53
7 Frequency Polygon 54
8 Dot Plots for One Variable 56
9 ECDF Plots 57
10 QQ Plots 58
11 Bar Plots of Counts 60
III Plot Two Variables - X & Y: Both Continuous or Discrete
61
12 Scatter plots: Continuous X and Y 62
12.1 Data format . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62
12.2 Plot types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62
12.3 Basic scatter plots . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
12.4 Scatter plots with multiple groups . . . . . . . . . . . . . . . . . . . . 65
12.5 Add regression line or smoothed conditional mean . . . . . . . . . . . 68
12.6 Add quantile lines from a quantile regression . . . . . . . . . . . . . . 71
12.7 Add marginal rugs to a scatter plot . . . . . . . . . . . . . . . . . . . 72
12.8 Jitter points to reduce overplotting . . . . . . . . . . . . . . . . . . . 73
12.9 Textual annotations . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74
13 Continuous bivariate distribution 75
13.1 Data format . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75
13.2 Plot types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75
13.3 Add heatmap of 2d bin counts . . . . . . . . . . . . . . . . . . . . . . 76
13.4 Add hexagon bining . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77
13.5 Scatter plots with 2d density estimation . . . . . . . . . . . . . . . . 79
13.6 Continuous function . . . . . . . . . . . . . . . . . . . . . . . . . . . 80
14 Two variables: Discrete X, Discrete Y 82
IV Plot Two Variables - X & Y: Discrete X and Continuous
Y 84
14.1 Data format . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85
14.2 Plot types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85
15 Box Plots 87
15.1 Basic box plots . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88
15.2 Change colors by groups . . . . . . . . . . . . . . . . . . . . . . . . . 89
15.3 Box plot with multiple groups . . . . . . . . . . . . . . . . . . . . . . 91
16 Violin plots 93
16.1 Basic violin plots . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93
16.2 Add summary statistics . . . . . . . . . . . . . . . . . . . . . . . . . . 94
16.3 Change colors by groups . . . . . . . . . . . . . . . . . . . . . . . . . 95
16.4 Violin plots with multiple groups . . . . . . . . . . . . . . . . . . . . 96
17 Dot Plots 97
17.1 Basic dot plots . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97
17.2 Add summary statistics . . . . . . . . . . . . . . . . . . . . . . . . . . 98
17.3 Change colors by groups . . . . . . . . . . . . . . . . . . . . . . . . . 100
17.4 Dot plot with multiple groups . . . . . . . . . . . . . . . . . . . . . . 101
18 Stripcharts 103
18.1 Basic stripcharts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103
18.2 Add summary statistics . . . . . . . . . . . . . . . . . . . . . . . . . . 104
18.3 Change point shapes by groups . . . . . . . . . . . . . . . . . . . . . 105
18.4 Change colors by groups . . . . . . . . . . . . . . . . . . . . . . . . . 106
18.5 Stripchart with multiple groups . . . . . . . . . . . . . . . . . . . . . 108
19 Line Plots 110
19.1 Data format . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110
19.2 Basic line plots . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111
19.3 Line plot with multiple groups . . . . . . . . . . . . . . . . . . . . . . 112
19.4 Line plot with a numeric x-axis . . . . . . . . . . . . . . . . . . . . . 113
19.5 Line plot with dates on x-axis: Time series . . . . . . . . . . . . . . . 115
20 Bar Plots 118
20.1 Data format . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 118
20.2 Basic bar plots . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119
20.3 Change color by groups . . . . . . . . . . . . . . . . . . . . . . . . . . 120
20.4 Bar plot with multiple groups . . . . . . . . . . . . . . . . . . . . . . 121
21 Visualizing Error 124
21.1 Data format . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124
21.2 Compute mean and standard deviation . . . . . . . . . . . . . . . . . 124
21.3 Plot types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125
21.4 Cross bar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 126
21.5 Error bar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 129
21.6 Horizontal error bar . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131
21.7 Interval represented by a vertical line . . . . . . . . . . . . . . . . . . 132
21.8 Combine dot plot and error bars . . . . . . . . . . . . . . . . . . . . . 133
22 Pie Charts 135
22.1 Basic pie charts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 135
22.2 Customized pie charts . . . . . . . . . . . . . . . . . . . . . . . . . . 136
V Graphical Parameters 138
23 Graphical Primitives 139
24 Main Titles, Axis Labels and Legend Title 142
24.1 Change the main title and axis labels . . . . . . . . . . . . . . . . . . 143
24.2 Change the appearance of labels . . . . . . . . . . . . . . . . . . . . . 143
24.3 Change legend titles . . . . . . . . . . . . . . . . . . . . . . . . . . . 144
25 Legend Position and Appearance 145
25.1 Change legend position and appearance . . . . . . . . . . . . . . . . . 145
25.2 guides() : set or remove the legend for a specific aesthetic . . . . . . . 147
26 Colors 150
26.1 Use a single color . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 151
26.2 Change colors by groups . . . . . . . . . . . . . . . . . . . . . . . . . 151
26.3 Gradient or continuous colors . . . . . . . . . . . . . . . . . . . . . . 156
27 Point Shapes, colors and size 158
28 Line types 161
29 Axis limits: Minimum and Maximum values 164
30 Axis transformations: log and sqrt 166
31 Date Axes 170
31.1 Format axis tick mark labels: days, weeks, months . . . . . . . . . . . 170
31.2 Date axis limits . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 172
32 Axis Ticks : Customize Tick Marks and Labels 173
33 Themes and Background Colors 178
33.1 Change plot themes: Quick functions . . . . . . . . . . . . . . . . . . 178
33.2 Customize plot background . . . . . . . . . . . . . . . . . . . . . . . 181
33.3 Use ggthemes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 183
33.4 Create your theme . . . . . . . . . . . . . . . . . . . . . . . . . . . . 184
34 Text Annotations 185
34.1 Text annotations using geom_text and geom_label . . . . . . . . . . 186
34.2 annotation_custom : Add a static text annotation . . . . . . . . . . . 187
34.3 ggrepel: Avoid overlapping of text labels . . . . . . . . . . . . . . . . 188
35 Add Straight Lines to a Plot 191
36 Rotate a Plot: Flip and Reverse 193
37 Facets: Split a Plot into a Matrix of Panels 194
38 Position Adjustements 199
39 Coordinate Systems 201
VI Extensions to ggplot2 203
40 Arrange Multiple Graphs on the Same Page 204
40.1 Required R packages . . . . . . . . . . . . . . . . . . . . . . . . . . . 204
40.2 Data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 205
40.3 cowplot: Arrange publication-ready plots . . . . . . . . . . . . . . . . 205
40.4 gridExtra package . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 211
40.5 ggExtra: Add marginal distributions plots . . . . . . . . . . . . . . . 221
40.6 Insert an external graphical element inside a ggplot . . . . . . . . . . 222
40.7 Mix table, text and ggplot2 graphs . . . . . . . . . . . . . . . . . . . 225
41 Correlation Matrix Visualization 227
41.1 GGally . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 227
41.2 ggcorrplot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 229
42 Plotting Survival Curves 232
42.1 Fitting survival curves . . . . . . . . . . . . . . . . . . . . . . . . . . 232
42.2 Drawing survival curves with survminer . . . . . . . . . . . . . . . . . 233
43 References and further reading 236
43.1 Extensions to ggplot2: R packages and functions . . . . . . . . . . . . 236
43.2 Cheat Sheets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 237
43.3 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 237
· · · · · · (
收起)