Wednesday, 11 January 2017

Working with GGPlot

What is the Grammar of Graphics?

The basic idea behind it is to independently specify plot building blocks and combine them to create just about any kind of graphical display you want.

GGPlot2

The ggplot2 is a package that offers a powerful graphics language for creating elegant and complex plots. Originally based on Leland Wilkinson's The Grammar of Graphics, ggplot2 allows you to create graphs that represent both univariate and multivariate numerical and categorical data in a straightforward manner.

#install & load ggplot library
install.package("ggplot2")
library("ggplot2")

### show info about the data
head(diamonds)
head(mtcars)



### comparison qplot vs ggplot
# qplot histogram
qplot(clarity, data=diamonds, fill=cut, geom="bar")



### how to use qplot
# scatterplot
qplot(wt, mpg, data=mtcars)


# transform input data with functions
qplot(log(wt), mpg - 10, data=mtcars)



# add aesthetic mapping (hint: how does mapping work)qplot(wt, mpg, data=mtcars, color=qsec)


# change size of points (hint: color/colour, hint: set aesthetic/mapping)
qplot(wt, mpg, data=mtcars, color=qsec, size=3)



#use alpha blending
qplot(wt, mpg, data=mtcars, alpha=qsec)



#continuous scale vs. discrete scale
head(mtcars)
qplot(wt, mpg, data=mtcars, colour=cyl)



levels(mtcars$cyl)
qplot(wt, mpg, data=mtcars, colour=factor(cyl))



# combine mappings (hint: hollow points, geom-concept, legend combination)
qplot(wt, mpg, data=mtcars, size=qsec, color=factor(carb))



qplot(wt, mpg, data=mtcars, size=qsec, color=factor(carb), shape=I(1))



qplot(wt, mpg, data=mtcars, size=qsec, shape=factor(cyl), geom="point")



qplot(wt, mpg, data=mtcars, size=factor(cyl), geom="point")



# bar-plot
qplot(factor(cyl), data=mtcars, geom="bar")



# flip plot by 90°
qplot(factor(cyl), data=mtcars, geom="bar") + coord_flip()




# difference between fill/color bars
qplot(factor(cyl), data=mtcars, geom="bar", fill=factor(cyl))



qplot(factor(cyl), data=mtcars, geom="bar", colour=factor(cyl))



# fill by variable
qplot(factor(cyl), data=mtcars, geom="bar", fill=factor(gear))



# use different display of bars (stacked, dodged, identity)
head(diamonds)
qplot(clarity, data=diamonds, geom="bar", fill=cut, position="stack")



# histogram
qplot(carat, data=diamonds, geom="histogram")



# change binwidth
qplot(carat, data=diamonds, geom="histogram", binwidth=0.01)



# use geom to combine plots (hint: order of layers)
qplot(wt, mpg, data=mtcars, geom=c("point", "smooth"))



qplot(wt, mpg, data=mtcars, color=factor(cyl), geom=c("point", "smooth"))



# using ggplot-syntax with qplot (hint: qplot creates layers automatically)
qplot(mpg, wt, data=mtcars, color=factor(cyl), geom="point") + geom_line()





# add an additional layer with different mapping

p.tmp + geom_point()

p.tmp + geom_point() + geom_point(aes(y=disp))


# dealing with overplotting (hollow points, pixel points, alpha[0-1] )

t.df <- data.frame(x=rnorm(2000), y=rnorm(2000))

p.norm <- ggplot(t.df, aes(x,y))

p.norm + geom_point()



p.norm + geom_point(shape=1)



p.norm + geom_point(shape=".")



p.norm + geom_point(colour=alpha("blue", 1/10))



# using scales (color palettes, manual colors, matching of colors to values)

p.tmp <- qplot(cut, data=diamonds, geom="bar", fill=cut)

p.tmp

RColorBrewer::display.brewer.all()




p.tmp + scale_fill_manual(values=c("#7fc6bc","#083642","#b1df01","#cdef9c","#466b5d"))





### create a pie-chart, radar-chart (hint: not recommended)

# map a barchart to a polar coordinate system

p.tmp <- ggplot(mtcars, aes(x=factor(1), fill=factor(cyl))) + geom_bar(width=1)

p.tmp

p.tmp + coord_polar(theta="y")



p.tmp + coord_polar()





ggplot(mtcars, aes(factor(cyl), fill=factor(cyl))) + geom_bar(width=1) + coord_polar()







No comments:

Post a Comment