1
1
bp <- ggplot(PlantGrowth , aes(x = group , y = weight )) + geom_boxplot()
2
2
3
3
bp1 <- bp + coord_flip()
4
- save_outputs(bp1 , ' axes/coord flip' , file_prefix = " " )
4
+ save_outputs(bp1 , " axes/coord flip" , file_prefix = " " )
5
5
6
6
# Manually set the order of a discrete-valued axis
7
7
bp2 <- bp + scale_x_discrete(limits = c(" trt1" ," trt2" ," ctrl" ))
8
- save_outputs(bp2 , ' axes/discrete valued axes' , file_prefix = " " )
8
+ save_outputs(bp2 , " axes/discrete valued axes" , file_prefix = " " )
9
9
10
10
# Reverse the order of a discrete-valued axis
11
11
# Get the levels of the factor
@@ -15,66 +15,66 @@ flevels <- levels(PlantGrowth$group)
15
15
flevels <- rev(flevels )
16
16
# "trt2" "trt1" "ctrl"
17
17
bp3 <- bp + scale_x_discrete(limits = flevels )
18
- save_outputs(bp3 , ' axes/reversed ordered axes - 1' , file_prefix = " " )
18
+ save_outputs(bp3 , " axes/reversed ordered axes - 1" , file_prefix = " " )
19
19
20
20
# Or it can be done in one line:
21
21
bp4 <- bp + scale_x_discrete(limits = rev(levels(PlantGrowth $ group )) )
22
- save_outputs(bp4 , ' axes/reversed ordered axes - 2' , file_prefix = " " )
22
+ save_outputs(bp4 , " axes/reversed ordered axes - 2" , file_prefix = " " )
23
23
24
24
bp5 <- bp + scale_x_discrete(breaks = c(" ctrl" , " trt1" , " trt2" ), labels = c(" Control" , " Treat 1" , " Treat 2" ))
25
- save_outputs(bp5 , ' axes/setting tick mark labels' , file_prefix = " " )
25
+ save_outputs(bp5 , " axes/setting tick mark labels" , file_prefix = " " )
26
26
27
27
# Hide x tick marks, labels, and grid lines
28
28
bp6 <- bp + scale_x_discrete(breaks = NULL )
29
- save_outputs(bp6 , ' axes/hidden tick marks labels gridline' , file_prefix = " " )
29
+ save_outputs(bp6 , " axes/hidden tick marks labels gridline" , file_prefix = " " )
30
30
31
31
# Hide all tick marks and labels (on X axis), but keep the gridlines
32
32
bp7 <- bp + theme(axis.ticks = element_blank(), axis.text.x = element_blank())
33
- save_outputs(bp7 , ' axes/hidden tick marks and labels' , file_prefix = " " )
33
+ save_outputs(bp7 , " axes/hidden tick marks and labels" , file_prefix = " " )
34
34
35
35
# Set the range of a continuous-valued axis
36
36
# These are equivalent
37
37
bp8 <- bp + ylim(0 ,8 )
38
- save_outputs(bp8 , ' axes/set range of continuous-valued axis - 1' , file_prefix = " " )
38
+ save_outputs(bp8 , " axes/set range of continuous-valued axis - 1" , file_prefix = " " )
39
39
bp9 <- bp + scale_y_continuous(limits = c(0 ,8 ))
40
- save_outputs(bp9 , ' axes/set range of continuous-valued axis - 2' , file_prefix = " " )
40
+ save_outputs(bp9 , " axes/set range of continuous-valued axis - 2" , file_prefix = " " )
41
41
42
42
# These two do the same thing; all data points outside the graphing range are dropped,
43
43
# resulting in a misleading box plot
44
44
bp10 <- bp + ylim(5 , 7.5 )
45
- save_outputs(bp10 , ' axes/misleading range' , file_prefix = " " )
45
+ save_outputs(bp10 , " axes/misleading range" , file_prefix = " " )
46
46
bp + scale_y_continuous(limits = c(5 , 7.5 ))
47
47
48
48
# Using coord_cartesian "zooms" into the area
49
49
bp11 <- bp + coord_cartesian(ylim = c(5 , 7.5 ))
50
- save_outputs(bp11 , ' axes/coord_cartesian' , file_prefix = " " )
50
+ save_outputs(bp11 , " axes/coord_cartesian" , file_prefix = " " )
51
51
52
52
# Specify tick marks directly
53
53
bp12 <- bp + coord_cartesian(ylim = c(5 , 7.5 )) +
54
54
scale_y_continuous(breaks = seq(0 , 10 , 0.25 )) # Ticks from 0-10, every .25
55
- save_outputs(bp12 , ' axes/specify tick marks directly' , file_prefix = " " )
55
+ save_outputs(bp12 , " axes/specify tick marks directly" , file_prefix = " " )
56
56
57
57
# Reverse order of a continuous-valued axis
58
58
bp13 <- bp + scale_y_reverse()
59
- save_outputs(bp13 , ' axes/reverse y scale' , file_prefix = " " )
59
+ save_outputs(bp13 , " axes/reverse y scale" , file_prefix = " " )
60
60
61
61
# Setting the tick marks on an axis
62
62
# This will show tick marks on every 0.25 from 1 to 10
63
63
# The scale will show only the ones that are within range (3.50-6.25 in this case)
64
64
bp14 <- bp + scale_y_continuous(breaks = seq(1 ,10 ,1 / 4 ))
65
- save_outputs(bp14 , ' axes/manual tick marks' , file_prefix = " " )
65
+ save_outputs(bp14 , " axes/manual tick marks" , file_prefix = " " )
66
66
67
67
# The breaks can be spaced unevenly
68
68
bp15 <- bp + scale_y_continuous(breaks = c(4 , 4.25 , 4.5 , 5 , 6 ,8 ))
69
- save_outputs(bp15 , ' axes/uneven tick marks' , file_prefix = " " )
69
+ save_outputs(bp15 , " axes/uneven tick marks" , file_prefix = " " )
70
70
71
71
# Suppress ticks and gridlines
72
72
bp16 <- bp + scale_y_continuous(breaks = NULL )
73
- save_outputs(bp16 , ' axes/suppress y ticks labels and gridlines' , file_prefix = " " )
73
+ save_outputs(bp16 , " axes/suppress y ticks labels and gridlines" , file_prefix = " " )
74
74
75
75
# Hide tick marks and labels (on Y axis), but keep the gridlines
76
76
bp17 <- bp + theme(axis.ticks = element_blank(), axis.text.y = element_blank())
77
- save_outputs(bp17 , ' axes/suppress y ticks and labels' , file_prefix = " " )
77
+ save_outputs(bp17 , " axes/suppress y ticks and labels" , file_prefix = " " )
78
78
79
79
# Create some noisy exponentially-distributed data
80
80
xval = c(0.26932812,-0.05341404,0.36977717,0.91504712,0.46329006,0.37956526, 0.93290644,0.75558976,0.67633497,0.48655293,0.79478162,0.55109982, 0.51681398,0.81073512,0.49406579,0.93919618,0.90472008,0.98732256, 0.94379876,0.95790909,0.54614241,1.13356941,1.13299144,1.18159277, 1.16428407,1.22955005,1.21030897,1.23314811,1.53822718,1.53674330, 1.80020468,1.40774011,1.74573515,1.26651625,2.06607711,1.50237263, 1.38480531,1.83625381,2.35275649,1.99004291,2.80396442,2.20863240, 2.42998876,2.12801180,2.26290348,2.38185989,2.14936036,2.66587947, 2.64586596,2.44240603,2.39266452,3.11831215,2.70258927,2.65529134, 2.65634690,2.95984290,2.71058076,2.87919480,3.07739358,2.66841935, 3.10792706,3.17134285,3.98070271,3.55497279,3.36831009,3.31390892, 3.32753965,2.86981968,3.22741000,3.78806438,3.74434536,3.56928928, 3.83783177,3.24485807,4.05766233,4.13619455,4.26888054,3.47546258, 3.93045819,3.77620080,4.66676431,3.88059240,4.54694485,4.03915767, 4.25556093,4.39251819,4.42692029,4.23262929,4.44890758,4.84981161, 4.51104252,4.33004508,5.06350705,4.89714069,4.21599077,4.55457578, 5.04044393,4.89111297,5.03105215,4.64113164)
@@ -84,34 +84,34 @@ dat <- data.frame(xval = xval, yval = yval)
84
84
85
85
# A scatterplot with regular (linear) axis scaling
86
86
sp <- ggplot(dat , aes(xval , yval )) + geom_point()
87
- save_outputs(sp , ' axes/linear axes' , file_prefix = " " )
87
+ save_outputs(sp , " axes/linear axes" , file_prefix = " " )
88
88
89
89
# log2 scaling of the y axis (with visually-equal spacing)
90
90
library(scales ) # Need the scales package
91
91
sp1 <- sp + scale_y_continuous(trans = log2_trans())
92
- save_outputs(sp1 , ' axes/ln y axes with visual-equal spacing' , file_prefix = " " )
92
+ save_outputs(sp1 , " axes/ln y axes with visual-equal spacing" , file_prefix = " " )
93
93
94
94
# log2 coordinate transformation (with visually-diminishing spacing)
95
95
sp2 <- sp + coord_trans(y = " log2" )
96
- save_outputs(sp2 , ' axes/ln y axes with visually diminishing spacing' , file_prefix = " " )
96
+ save_outputs(sp2 , " axes/ln y axes with visually diminishing spacing" , file_prefix = " " )
97
97
98
98
sp3 <- sp + scale_y_continuous(trans = log2_trans(),
99
99
breaks = trans_breaks(" log2" , function (x ) 2 ^ x ),
100
100
labels = trans_format(" log2" , math_format(2 ^ .x )))
101
- save_outputs(sp3 , ' axes/ln y axes with exponent tick marks' , file_prefix = " " )
101
+ save_outputs(sp3 , " axes/ln y axes with exponent tick marks" , file_prefix = " " )
102
102
103
103
dat10 <- data.frame (xval = xval , yval = yval )
104
104
105
105
sp10 <- ggplot(dat10 , aes(xval , yval )) + geom_point()
106
106
107
107
# log10
108
108
sp101 <- sp10 + scale_y_log10()
109
- save_outputs(sp101 , ' axes/log_10 y axes' , file_prefix = " " )
109
+ save_outputs(sp101 , " axes/log_10 y axes" , file_prefix = " " )
110
110
111
111
# log10 with exponents on tick labels
112
112
sp102 <- sp10 + scale_y_log10(breaks = trans_breaks(" log10" , function (x ) 10 ^ x ),
113
113
labels = trans_format(" log10" , math_format(10 ^ .x )))
114
- save_outputs(sp102 , ' axes/log_10 y axes with exponent tick marks' , file_prefix = " " )
114
+ save_outputs(sp102 , " axes/log_10 y axes with exponent tick marks" , file_prefix = " " )
115
115
116
116
# Data where x ranges from 0-10, y ranges from 0-30
117
117
set.seed(202 )
@@ -120,61 +120,61 @@ sp <- ggplot(dat, aes(xval, yval)) + geom_point()
120
120
121
121
# Force equal scaling
122
122
sp4 <- sp + coord_fixed()
123
- save_outputs(sp4 , ' axes/forced equal spacing' , file_prefix = " " )
123
+ save_outputs(sp4 , " axes/forced equal spacing" , file_prefix = " " )
124
124
125
125
# Equal scaling, with each 1 on the x axis the same length as y on x axis
126
126
sp5 <- sp + coord_fixed(ratio = 1 / 3 )
127
- save_outputs(sp5 , ' axes/forced equal scaling' , file_prefix = " " )
127
+ save_outputs(sp5 , " axes/forced equal scaling" , file_prefix = " " )
128
128
129
129
bp10 <- bp + theme(axis.title.x = element_blank()) + # Remove x-axis label
130
130
ylab(" Weight (Kg)" ) # Set y-axis label
131
- save_outputs(bp10 , ' axes/axes labels' , file_prefix = " " )
131
+ save_outputs(bp10 , " axes/axes labels" , file_prefix = " " )
132
132
133
133
# Also possible to set the axis label with the scale
134
- # Note that vertical space is still reserved for x' s label
134
+ # Note that vertical space is still reserved for x" s label
135
135
bp11 <- bp + scale_x_discrete(name = " " ) +
136
136
scale_y_continuous(name = " Weight (Kg)" )
137
- save_outputs(bp11 , ' axes/axes labels set with scale' , file_prefix = " " )
137
+ save_outputs(bp11 , " axes/axes labels set with scale" , file_prefix = " " )
138
138
139
139
# Change font options:
140
140
# X-axis label: bold, red, and 20 points
141
141
# X-axis tick marks: rotate 90 degrees CCW, move to the left a bit (using vjust,
142
142
# since the labels are rotated), and 16 points
143
143
bp12 <- bp + theme(axis.title.x = element_text(face = " bold" , colour = " #990000" , size = 20 ),
144
144
axis.text.x = element_text(angle = 90 , vjust = 0.5 , size = 16 ))
145
- save_outputs(bp12 , ' axes/axes labels with formatting' , file_prefix = " " )
145
+ save_outputs(bp12 , " axes/axes labels with formatting" , file_prefix = " " )
146
146
147
147
# Label formatters
148
148
library(scales ) # Need the scales package
149
149
bp13 <- bp + scale_y_continuous(labels = percent ) +
150
150
scale_x_discrete(labels = abbreviate ) # In this particular case, it has no effect
151
- save_outputs(bp13 , ' axes/axes labels with percent labels' , file_prefix = " " )
151
+ save_outputs(bp13 , " axes/axes labels with percent labels" , file_prefix = " " )
152
152
153
153
# Self-defined formatting function for times.
154
154
timeHMS_formatter <- function (x ) {
155
155
h <- floor(x / 60 )
156
156
m <- floor(x %% 60 )
157
157
s <- round(60 * (x %% 1 )) # Round to nearest second
158
- lab <- sprintf(' %02d:%02d:%02d' , h , m , s ) # Format the strings as HH:MM:SS
159
- lab <- gsub(' ^00:' , ' ' , lab ) # Remove leading 00: if present
160
- lab <- gsub(' ^0 ' , ' ' , lab ) # Remove leading 0 if present
158
+ lab <- sprintf(" %02d:%02d:%02d" , h , m , s ) # Format the strings as HH:MM:SS
159
+ lab <- gsub(" ^00:" , " " , lab ) # Remove leading 00: if present
160
+ lab <- gsub(" ^0 " , " " , lab ) # Remove leading 0 if present
161
161
}
162
162
163
163
bp14 <- bp + scale_y_continuous(label = timeHMS_formatter )
164
- save_outputs(bp14 , ' axes/axes labels with custom time labels' , file_prefix = " " )
164
+ save_outputs(bp14 , " axes/axes labels with custom time labels" , file_prefix = " " )
165
165
166
166
# Hide all the gridlines
167
167
bp15 <- bp + theme(panel.grid.minor = element_blank(), panel.grid.major = element_blank())
168
- save_outputs(bp15 , ' axes/hidden gridlines' , file_prefix = " " )
168
+ save_outputs(bp15 , " axes/hidden gridlines" , file_prefix = " " )
169
169
170
170
# Hide just the minor gridlines
171
171
bp16 <- bp + theme(panel.grid.minor = element_blank())
172
- save_outputs(bp16 , ' axes/hidden minor gridlines' , file_prefix = " " )
172
+ save_outputs(bp16 , " axes/hidden minor gridlines" , file_prefix = " " )
173
173
174
174
# Hide all the horizontal gridlines
175
175
bp17 <- bp + theme(panel.grid.minor.x = element_blank(), panel.grid.major.x = element_blank())
176
- save_outputs(bp17 , ' axes/hidden horizontal gridlines' , file_prefix = " " )
176
+ save_outputs(bp17 , " axes/hidden horizontal gridlines" , file_prefix = " " )
177
177
178
178
# Hide all the vertical gridlines
179
179
bp18 <- bp + theme(panel.grid.minor.y = element_blank(), panel.grid.major.y = element_blank())
180
- save_outputs(bp18 , ' axes/hidden vertical gridlines' , file_prefix = " " )
180
+ save_outputs(bp18 , " axes/hidden vertical gridlines" , file_prefix = " " )
0 commit comments