introduction to ggplot2 from Wickham and Grolemund' chapter 1
#scatterplot
#build coordinate system at global level, and geom_ function at local level
library (ggplot2)
ggplot (data = mpg)+
geom_point (mapping = aes (x= displ, y= hwy))
g <- ggplot (data = mpg)
g+ geom_point (mapping = aes (x= displ, y= hwy, color= class))
g+ geom_point (aes (x= displ, y= hwy, size= class))
## Warning: Using size for a discrete variable is not advised.
g+ geom_point (aes (x= displ, y= hwy, alpha= class))
## Warning: Using alpha for a discrete variable is not advised.
g+ geom_point (aes (x= displ, y= hwy, shape= class)) #the 7th category is not plotted
## Warning: The shape palette can deal with a maximum of 6 discrete values because more than 6 becomes difficult to
## discriminate; you have 7. Consider specifying shapes manually if you must have them.
## Warning: Removed 62 rows containing missing values (geom_point).
g+ geom_point (aes (x= displ, y= hwy), color= "blue" )
#facets
g+ geom_point (aes (x= displ, y= hwy))+
facet_wrap (~ class, nrow= 2 )
g+ geom_point (aes (x= displ, y= hwy))+
facet_wrap (~ class) #by default nrow=3
g+ geom_point (aes (x= displ, y= hwy))+
facet_grid (~ class)
g+ geom_point (aes (x= displ, y= hwy))+
facet_grid (drv ~ cyl)
g+ geom_point (aes (x= displ, y= hwy))+
facet_grid (. ~ cyl)
g+ geom_point (aes (x= displ, y= hwy))+
facet_grid (drv ~ .)
g+ geom_point (aes (x= displ, y= hwy))+
facet_wrap (drv ~ .)
g+ geom_point (aes (x= displ, y= hwy))+
facet_grid (. ~ drv)
#lines (use of group, color, and linetype)
#by default, geom_smooth use method="loess"
g+ geom_point (aes (x= displ, y= hwy))
g+ geom_smooth (aes (x= displ, y= hwy))
## `geom_smooth()` using method = 'loess' and formula 'y ~ x'
g+ geom_smooth (aes (x= displ, y= hwy, linetype= drv)) #with legend
## `geom_smooth()` using method = 'loess' and formula 'y ~ x'
g+ geom_point (aes (x= displ, y= hwy))+
geom_smooth (aes (x= displ, y= hwy))
## `geom_smooth()` using method = 'loess' and formula 'y ~ x'
g+ geom_point (aes (x= displ, y= hwy))+
geom_smooth (aes (x= displ, y= hwy, group= drv),
show.legend = T) #do not add legend
## `geom_smooth()` using method = 'loess' and formula 'y ~ x'
#local level
#g+geom_point(aes(x=displ, y=hwy))+
# geom_smooth(aes(group=drv),
# show.legend = T)
g+ geom_point (aes (x= displ, y= hwy))+
geom_smooth (aes (x= displ, y= hwy, color= drv),
show.legend = T)
## `geom_smooth()` using method = 'loess' and formula 'y ~ x'
g <- ggplot (data = mpg, mapping = aes (x= displ, y= hwy))
g+ geom_point ()+ geom_smooth ()
## `geom_smooth()` using method = 'loess' and formula 'y ~ x'
g+ geom_point (aes (color= class))+ geom_smooth ()
## `geom_smooth()` using method = 'loess' and formula 'y ~ x'
#g+geom_point(aes(color=class))+geom_smooth(
# data = filter(mpg, class=="subcompact"),
# se=FALSE,
# method = "lm"
#)
ggplot (data = diamonds)+
stat_count (mapping = aes (x= cut))
ggplot (data = diamonds)+
geom_bar (mapping = aes (x= cut))
#ggplot(data = diamonds)+
# geom_histogram(mapping = aes(x=cut))#do not work; x needs to be a continuous variable
ggplot (data = diamonds)+
geom_histogram (mapping = aes (x= cut), stat = "count" )
## Warning: Ignoring unknown parameters: binwidth, bins, pad
ggplot (data = diamonds)+
stat_summary (mapping = aes (x= cut, y= depth),
fun.ymax = max,
fun.ymin = min,
fun.y = median)
## Warning: `fun.y` is deprecated. Use `fun` instead.
## Warning: `fun.ymin` is deprecated. Use `fun.min` instead.
## Warning: `fun.ymax` is deprecated. Use `fun.max` instead.
?stat_summary
#position adjustments
ggplot (data = diamonds)+
geom_bar (mapping = aes (x= cut, color= cut))
ggplot (data = diamonds)+
geom_bar (mapping = aes (x= cut, fill= cut))
ggplot (data = diamonds)+
geom_bar (mapping = aes (x= cut, fill= clarity))
#position
ggplot (data = diamonds,
mapping = aes (x= cut, fill= clarity))+
geom_bar (alpha= 1 / 5 , position = "identity" )
ggplot (data = diamonds,
mapping = aes (x= cut, color= clarity))+
geom_bar (fill= NA , position = "identity" )
#position=fill - stacking
ggplot (data = diamonds)+
geom_bar (mapping = aes (x= cut, fill= clarity),
position = "fill" )
#dodge-besides each other
ggplot (data = diamonds)+
geom_bar (mapping = aes (x= cut, fill= clarity),
position = "dodge" )
#add some random noise
table (mpg$ displ)
##
## 1.6 1.8 1.9 2 2.2 2.4 2.5 2.7 2.8 3 3.1 3.3 3.4 3.5 3.6 3.7 3.8 3.9 4 4.2 4.4 4.6 4.7 5 5.2 5.3 5.4 5.6 5.7 5.9
## 5 14 3 21 6 13 20 8 10 8 6 9 4 5 2 3 8 3 15 4 1 11 17 2 5 6 8 1 8 2
## 6 6.1 6.2 6.5 7
## 1 1 2 1 1
ggplot (data = mpg)+
geom_point (mapping = aes (x= displ, y= hwy),
position = "jitter" )
#coordinate system
ggplot (data = mpg, mapping = aes (x= class, y= hwy))+
geom_boxplot ()
ggplot (data = mpg, mapping = aes (x= class, y= hwy))+
geom_boxplot ()+
coord_flip ()
nz<- map_data ("nz" )
ggplot (nz, aes (long, lat, group= group))+
geom_polygon (fill= "white" , color= "black" )
#coord_quickmap() sets the aspect ratio correctly
ggplot (nz, aes (long, lat, group= group))+
geom_polygon (fill= "white" , color= "black" )+
coord_quickmap ()
bar <- ggplot (data = diamonds)+
geom_bar (mapping = aes (x= cut, fill= cut),
show.legend = F, #don't add legend
width = 1 )+
theme (aspect.ratio = 1 )+
labs (x= NULL , y= NULL ) #don't add anything on x,y-axis
bar+ coord_flip ()