library(ggplot2)
mpg
# to have file names easily available in top menu
View(mpg)
#Every plot has at least 3 sections 1-the data file name 2-the variable(s) to be plotted aes’s and 3-a layer stating how to present the results - the geom’s. Example below point = scatter
ggplot(mpg, aes(x=displ, y=hwy)) +
geom_point()

#The x= and y= aren’t required - they are assumed
ggplot(mpg, aes(displ, hwy)) +
geom_point()

#Colour, Size, Shape and Other Aesthetic Attributes - a variable is used - so in aes section #A third variable - class - added and to be shown as different colours #It is the same graph - just each point is coloured according to its class classification
ggplot(mpg, aes(displ, hwy, colour = fl)) +
geom_point()

#To facet a plot you simply add a facetting specification with facet wrap(), which takes the name of a variable preceded by ~. nb- this graph uses 4 variables
ggplot(mpg, aes(displ, hwy, colour= fl)) +
geom_point() +
facet_wrap(~class)

#Other useful geom’s #• geom smooth() fits a smoother to the data and displays the smooth and its standard error. #• geom boxplot() produces a box-and-whisker plot to summarise the distribution of a set of points. #• geom histogram() and geom freqpoly() show the distribution of continuous variables. #• geom bar() shows the distribution of categorical variables. #• geom path() and geom line() draw lines between the data points. A line plot is constrained to produce lines that travel from left to right, while paths can go in any direction. Lines are typically used to explore how things change over time.
#Adding smoothing and other lines - NOT Linear #A smoothed line - nb - not a regression line as I know it - maybe a bit better? #LOESS and LOWESS thus build on “classical” methods, such as linear and nonlinear least squares regression. They address situations in which the classical procedures do not perform well or cannot be effectively applied without undue labor. LOESS combines much of the simplicity of linear least squares regression with the flexibility of nonlinear regression. #If you’re not interested in the confidence interval, turn it off with geom smooth(se = FALSE).
ggplot(mpg, aes(displ, hwy)) +
geom_point() +
#geom_smooth(se = FALSE)
geom_smooth()

#• method = “lm” fits a linear model, giving the line of best fit. NB-Linear - #• method = “rlm” works like lm(), but uses a robust fitting algorithm so that outliers don’t affect the fit as much. It’s part of the MASS package, so remember to load that first.
ggplot(mpg, aes(displ, hwy)) +
geom_point() +
geom_smooth(method = "lm")

#Boxplots and Jittered Points #When a set of data includes a categorical variable and one or more continuous variables, you will probably be interested to know how the values of the continuous variables vary with the levels of the categorical variable.
ggplot(mpg, aes(drv, hwy)) +
geom_point()

#Often there is overlapping of the points. jitter methods help solve this issue. The graph has many more data points implying that the graph above has data points on top of each other.
ggplot(mpg, aes(drv, hwy)) +
geom_jitter()

#A box-plot
ggplot(mpg, aes(drv, hwy)) +
geom_boxplot()

#Histograms and Frequency Polygons #Histograms and frequency polygons show the distribution of a single numeric variable. #Note how 2 graphs are presented.
ggplot(mpg, aes(hwy)) +
geom_histogram()

#
ggplot(mpg, aes(hwy)) +
geom_freqpoly()

#Using binwidth in freq dists
ggplot(mpg, aes(hwy)) +
geom_freqpoly(binwidth = 5)

#
ggplot(mpg, aes(hwy)) +
geom_freqpoly(binwidth = 1)

#Some Refinements
ggplot(mpg, aes(displ, colour = drv)) +
geom_freqpoly(binwidth = 0.5)

#
ggplot(mpg, aes(displ, fill = drv)) +
geom_histogram(binwidth = 0.5)+
facet_wrap(~drv, ncol = 1)

#
ggplot(mpg, aes(displ, colour = drv)) +
geom_freqpoly(binwidth = 0.5)+
facet_wrap(~drv, ncol = 1)

#Bar Charts #The discrete analogue of the histogram is the bar chart, geom bar(). (You’ll learn how to fix the labels in Sect. 8.4.2).
ggplot(mpg, aes(manufacturer)) +
geom_bar()

#Time Series with Line and Path Plots #change of data - 2 examples - one with a calculaion in aes section
ggplot(economics, aes(date, unemploy / pop)) +
geom_line()

#
ggplot(economics, aes(date, uempmed)) +
geom_line()

#Plots on top of each other
ggplot(economics, aes(date, unemploy)) +
geom_line() +
#new line with new data on top of previous graph - must use data =
geom_line(data = economics, aes(date, unemploy + 900))

#refer to ggplot2 book for rest - the above are the basics.
LS0tDQp0aXRsZTogIlIgTm90ZWJvb2siDQpvdXRwdXQ6IGh0bWxfbm90ZWJvb2sNCi0tLQ0KYGBge3J9DQpsaWJyYXJ5KGdncGxvdDIpDQptcGcNCiMgdG8gaGF2ZSBmaWxlIG5hbWVzIGVhc2lseSBhdmFpbGFibGUgaW4gdG9wIG1lbnUNClZpZXcobXBnKQ0KYGBgDQoNCiNFdmVyeSBwbG90IGhhcyBhdCBsZWFzdCAzIHNlY3Rpb25zIDEtdGhlIGRhdGEgZmlsZSBuYW1lIDItdGhlIHZhcmlhYmxlKHMpIHRvIGJlIHBsb3R0ZWQgYWVzJ3MgYW5kIDMtYSBsYXllciBzdGF0aW5nIGhvdyB0byBwcmVzZW50IHRoZSByZXN1bHRzIC0gdGhlIGdlb20ncy4gRXhhbXBsZSBiZWxvdyBwb2ludCA9IHNjYXR0ZXINCg0KYGBge3J9DQpnZ3Bsb3QobXBnLCBhZXMoeD1kaXNwbCwgeT1od3kpKSArDQogIGdlb21fcG9pbnQoKQ0KDQpgYGANCg0KI1RoZSB4PSBhbmQgeT0gYXJlbid0IHJlcXVpcmVkIC0gdGhleSBhcmUgYXNzdW1lZA0KYGBge3J9DQpnZ3Bsb3QobXBnLCBhZXMoZGlzcGwsIGh3eSkpICsNCiAgZ2VvbV9wb2ludCgpDQoNCmBgYA0KI0NvbG91ciwgU2l6ZSwgU2hhcGUgYW5kIE90aGVyIEFlc3RoZXRpYyBBdHRyaWJ1dGVzIC0gYSB2YXJpYWJsZSBpcyB1c2VkIC0gc28gaW4gYWVzIHNlY3Rpb24NCiNBIHRoaXJkIHZhcmlhYmxlIC0gY2xhc3MgLSBhZGRlZCBhbmQgdG8gYmUgc2hvd24gYXMgZGlmZmVyZW50IGNvbG91cnMNCiNJdCBpcyB0aGUgc2FtZSBncmFwaCAtIGp1c3QgZWFjaCBwb2ludCBpcyBjb2xvdXJlZCBhY2NvcmRpbmcgdG8gaXRzIGNsYXNzIGNsYXNzaWZpY2F0aW9uDQpgYGB7cn0NCmdncGxvdChtcGcsIGFlcyhkaXNwbCwgaHd5LCBjb2xvdXIgPSBmbCkpICsNCiAgZ2VvbV9wb2ludCgpDQoNCmBgYA0KI1RvIGZhY2V0IGEgcGxvdCB5b3Ugc2ltcGx5IGFkZCBhIGZhY2V0dGluZyBzcGVjae+sgWNhdGlvbiB3aXRoIGZhY2V0IHdyYXAoKSwgd2hpY2ggdGFrZXMgdGhlIG5hbWUgb2YgYSB2YXJpYWJsZSBwcmVjZWRlZCBieSB+LiBuYi0gdGhpcyBncmFwaCB1c2VzIDQgdmFyaWFibGVzDQpgYGB7cn0NCmdncGxvdChtcGcsIGFlcyhkaXNwbCwgaHd5LCBjb2xvdXI9IGZsKSkgKw0KICBnZW9tX3BvaW50KCkgKyANCiAgZmFjZXRfd3JhcCh+Y2xhc3MpDQoNCmBgYA0KDQojT3RoZXIgdXNlZnVsIGdlb20ncw0KI+KAoiBnZW9tIHNtb290aCgpIO+sgXRzIGEgc21vb3RoZXIgdG8gdGhlIGRhdGEgYW5kIGRpc3BsYXlzIHRoZSBzbW9vdGggYW5kIGl0cyBzdGFuZGFyZCBlcnJvci4gDQoj4oCiIGdlb20gYm94cGxvdCgpIHByb2R1Y2VzIGEgYm94LWFuZC13aGlza2VyIHBsb3QgdG8gc3VtbWFyaXNlIHRoZSBkaXN0cmlidXRpb24gb2YgYSBzZXQgb2YgcG9pbnRzLiANCiPigKIgZ2VvbSBoaXN0b2dyYW0oKSBhbmQgZ2VvbSBmcmVxcG9seSgpIHNob3cgdGhlIGRpc3RyaWJ1dGlvbiBvZiBjb250aW51b3VzIHZhcmlhYmxlcy4gDQoj4oCiIGdlb20gYmFyKCkgc2hvd3MgdGhlIGRpc3RyaWJ1dGlvbiBvZiBjYXRlZ29yaWNhbCB2YXJpYWJsZXMuIA0KI+KAoiBnZW9tIHBhdGgoKSBhbmQgZ2VvbSBsaW5lKCkgZHJhdyBsaW5lcyBiZXR3ZWVuIHRoZSBkYXRhIHBvaW50cy4gQSBsaW5lIHBsb3QgaXMgY29uc3RyYWluZWQgdG8gcHJvZHVjZSBsaW5lcyB0aGF0IHRyYXZlbCBmcm9tIGxlZnQgdG8gcmlnaHQsIHdoaWxlIHBhdGhzIGNhbiBnbyBpbiBhbnkgZGlyZWN0aW9uLiBMaW5lcyBhcmUgdHlwaWNhbGx5IHVzZWQgdG8gZXhwbG9yZSBob3cgdGhpbmdzIGNoYW5nZSBvdmVyIHRpbWUuDQoNCiNBZGRpbmcgc21vb3RoaW5nIGFuZCBvdGhlciBsaW5lcyAtIE5PVCBMaW5lYXINCiNBIHNtb290aGVkIGxpbmUgLSBuYiAtIG5vdCBhIHJlZ3Jlc3Npb24gbGluZSBhcyBJIGtub3cgaXQgLSBtYXliZSBhIGJpdCBiZXR0ZXI/DQojTE9FU1MgYW5kIExPV0VTUyB0aHVzIGJ1aWxkIG9uICJjbGFzc2ljYWwiIG1ldGhvZHMsIHN1Y2ggYXMgbGluZWFyIGFuZCBub25saW5lYXIgbGVhc3Qgc3F1YXJlcyByZWdyZXNzaW9uLiBUaGV5IGFkZHJlc3Mgc2l0dWF0aW9ucyBpbiB3aGljaCB0aGUgY2xhc3NpY2FsIHByb2NlZHVyZXMgZG8gbm90IHBlcmZvcm0gd2VsbCBvciBjYW5ub3QgYmUgZWZmZWN0aXZlbHkgYXBwbGllZCB3aXRob3V0IHVuZHVlIGxhYm9yLiBMT0VTUyBjb21iaW5lcyBtdWNoIG9mIHRoZSBzaW1wbGljaXR5IG9mIGxpbmVhciBsZWFzdCBzcXVhcmVzIHJlZ3Jlc3Npb24gd2l0aCB0aGUgZmxleGliaWxpdHkgb2Ygbm9ubGluZWFyIHJlZ3Jlc3Npb24uDQojSWYgeW914oCZcmUgbm90IGludGVyZXN0ZWQgaW4gdGhlIGNvbu+sgWRlbmNlIGludGVydmFsLCB0dXJuIGl0IG/vrIAgd2l0aCBnZW9tIHNtb290aChzZSA9IEZBTFNFKS4gDQpgYGB7cn0NCmdncGxvdChtcGcsIGFlcyhkaXNwbCwgaHd5KSkgKw0KICBnZW9tX3BvaW50KCkgKw0KICAjZ2VvbV9zbW9vdGgoc2UgPSBGQUxTRSkNCiAgZ2VvbV9zbW9vdGgoKQ0KYGBgDQoj4oCiIG1ldGhvZCA9ICJsbSIg76yBdHMgYSBsaW5lYXIgbW9kZWwsIGdpdmluZyB0aGUgbGluZSBvZiBiZXN0IO+sgXQuICBOQi1MaW5lYXIgLSANCiPigKIgbWV0aG9kID0gInJsbSIgd29ya3MgbGlrZSBsbSgpLCBidXQgdXNlcyBhIHJvYnVzdCDvrIF0dGluZyBhbGdvcml0aG0gc28gdGhhdCBvdXRsaWVycyBkb27igJl0IGHvrIBlY3QgdGhlIO+sgXQgYXMgbXVjaC4gSXTigJlzIHBhcnQgb2YgdGhlIE1BU1MgcGFja2FnZSwgc28gcmVtZW1iZXIgdG8gbG9hZCB0aGF0IO+sgXJzdC4NCg0KYGBge3J9DQpnZ3Bsb3QobXBnLCBhZXMoZGlzcGwsIGh3eSkpICsNCiAgZ2VvbV9wb2ludCgpICsNCiAgZ2VvbV9zbW9vdGgobWV0aG9kID0gImxtIikNCmBgYA0KI0JveHBsb3RzIGFuZCBKaXR0ZXJlZCBQb2ludHMNCiNXaGVuIGEgc2V0IG9mIGRhdGEgaW5jbHVkZXMgYSBjYXRlZ29yaWNhbCB2YXJpYWJsZSBhbmQgb25lIG9yIG1vcmUgY29udGludW91cyB2YXJpYWJsZXMsIHlvdSB3aWxsIHByb2JhYmx5IGJlIGludGVyZXN0ZWQgdG8ga25vdyBob3cgdGhlIHZhbHVlcyBvZiB0aGUgY29udGludW91cyB2YXJpYWJsZXMgdmFyeSB3aXRoIHRoZSBsZXZlbHMgb2YgdGhlIGNhdGVnb3JpY2FsIHZhcmlhYmxlLiANCmBgYHtyfQ0KZ2dwbG90KG1wZywgYWVzKGRydiwgaHd5KSkgKw0KICBnZW9tX3BvaW50KCkNCmBgYA0KI09mdGVuIHRoZXJlIGlzIG92ZXJsYXBwaW5nIG9mIHRoZSBwb2ludHMuIGppdHRlciBtZXRob2RzIGhlbHAgc29sdmUgdGhpcyBpc3N1ZS4gVGhlIGdyYXBoIGhhcyBtYW55IG1vcmUgZGF0YSBwb2ludHMgaW1wbHlpbmcgdGhhdCB0aGUgZ3JhcGggYWJvdmUgaGFzIGRhdGEgcG9pbnRzIG9uIHRvcCBvZiBlYWNoIG90aGVyLg0KYGBge3J9DQpnZ3Bsb3QobXBnLCBhZXMoZHJ2LCBod3kpKSArIA0KICBnZW9tX2ppdHRlcigpIA0KYGBgDQojQSBib3gtcGxvdA0KYGBge3J9DQpnZ3Bsb3QobXBnLCBhZXMoZHJ2LCBod3kpKSArDQogIGdlb21fYm94cGxvdCgpIA0KYGBgDQojSGlzdG9ncmFtcyBhbmQgRnJlcXVlbmN5IFBvbHlnb25zDQojSGlzdG9ncmFtcyBhbmQgZnJlcXVlbmN5IHBvbHlnb25zIHNob3cgdGhlIGRpc3RyaWJ1dGlvbiBvZiBhIHNpbmdsZSBudW1lcmljIHZhcmlhYmxlLiANCiNOb3RlIGhvdyAyIGdyYXBocyBhcmUgcHJlc2VudGVkLg0KYGBge3J9DQpnZ3Bsb3QobXBnLCBhZXMoaHd5KSkgKyANCiAgZ2VvbV9oaXN0b2dyYW0oKSANCiMNCmdncGxvdChtcGcsIGFlcyhod3kpKSArIA0KICBnZW9tX2ZyZXFwb2x5KCkgDQpgYGANCiNVc2luZyBiaW53aWR0aCBpbiBmcmVxIGRpc3RzDQpgYGB7cn0NCmdncGxvdChtcGcsIGFlcyhod3kpKSArDQogIGdlb21fZnJlcXBvbHkoYmlud2lkdGggPSA1KQ0KIw0KZ2dwbG90KG1wZywgYWVzKGh3eSkpICsgDQogIGdlb21fZnJlcXBvbHkoYmlud2lkdGggPSAxKQ0KYGBgDQojU29tZSBSZWZpbmVtZW50cw0KYGBge3J9DQpnZ3Bsb3QobXBnLCBhZXMoZGlzcGwsIGNvbG91ciA9IGRydikpICsgDQogIGdlb21fZnJlcXBvbHkoYmlud2lkdGggPSAwLjUpIA0KIw0KZ2dwbG90KG1wZywgYWVzKGRpc3BsLCBmaWxsID0gZHJ2KSkgKyANCiAgZ2VvbV9oaXN0b2dyYW0oYmlud2lkdGggPSAwLjUpKyANCiAgZmFjZXRfd3JhcCh+ZHJ2LCBuY29sID0gMSkNCiMNCmdncGxvdChtcGcsIGFlcyhkaXNwbCwgY29sb3VyID0gZHJ2KSkgKyANCiAgZ2VvbV9mcmVxcG9seShiaW53aWR0aCA9IDAuNSkrIA0KICBmYWNldF93cmFwKH5kcnYsIG5jb2wgPSAxKQ0KYGBgDQojQmFyIENoYXJ0cw0KI1RoZSBkaXNjcmV0ZSBhbmFsb2d1ZSBvZiB0aGUgaGlzdG9ncmFtIGlzIHRoZSBiYXIgY2hhcnQsIGdlb20gYmFyKCkuIChZb3XigJlsbCBsZWFybiBob3cgdG8g76yBeCB0aGUgbGFiZWxzIGluIFNlY3QuIDguNC4yKS4gDQpgYGB7cn0NCmdncGxvdChtcGcsIGFlcyhtYW51ZmFjdHVyZXIpKSArDQogIGdlb21fYmFyKCkNCg0KYGBgDQojVGltZSBTZXJpZXMgd2l0aCBMaW5lIGFuZCBQYXRoIFBsb3RzDQojY2hhbmdlIG9mIGRhdGEgLSAyIGV4YW1wbGVzIC0gb25lIHdpdGggYSBjYWxjdWxhaW9uIGluIGFlcyBzZWN0aW9uDQpgYGB7cn0NCmdncGxvdChlY29ub21pY3MsIGFlcyhkYXRlLCB1bmVtcGxveSAvIHBvcCkpICsNCiAgZ2VvbV9saW5lKCkgDQojDQpnZ3Bsb3QoZWNvbm9taWNzLCBhZXMoZGF0ZSwgdWVtcG1lZCkpICsgDQogIGdlb21fbGluZSgpDQpgYGANCiNQbG90cyBvbiB0b3Agb2YgZWFjaCBvdGhlcg0KYGBge3J9DQpnZ3Bsb3QoZWNvbm9taWNzLCBhZXMoZGF0ZSwgdW5lbXBsb3kpKSArDQogIGdlb21fbGluZSgpICsNCiNuZXcgbGluZSB3aXRoIG5ldyBkYXRhIG9uIHRvcCBvZiBwcmV2aW91cyBncmFwaCAtIG11c3QgdXNlIGRhdGEgPQ0KICBnZW9tX2xpbmUoZGF0YSA9IGVjb25vbWljcywgYWVzKGRhdGUsIHVuZW1wbG95ICsgOTAwKSkgDQpgYGANCiNyZWZlciB0byBnZ3Bsb3QyIGJvb2sgZm9yIHJlc3QgLSB0aGUgYWJvdmUgYXJlIHRoZSBiYXNpY3MuDQoNCg==