Sys.setlocale("LC_ALL","C")
packages = c(
"dplyr","ggplot2","d3heatmap","googleVis","devtools","plotly", "xgboost",
"magrittr","caTools","ROCR","corrplot", "rpart", "rpart.plot",
"doParallel", "caret", "glmnet", "Matrix", "e1071", "randomForest",
"flexclust", "FactoMineR", "factoextra", "maps", "ggmap", "igraph", "rgl",
"tm", "SnowballC", "wordcloud", "slam", "Matrix", "RColorBrewer"
)
existing = as.character(installed.packages()[,1])
for(pkg in packages[!(packages %in% existing)]) install.packages(pkg)
rm(list=ls(all=T))
options(digits=4, scipen=12)
library(dplyr)
library(ggplot2)
library(maps)
library(ggmap)
7.1 ggplot2 繪圖套件
7.1.1 基本點狀圖
WHO = read.csv("data/WHO.csv")
# Basic Plot in R
plot(WHO$GNI, WHO$FertilityRate)

library(ggplot2)
# Create the ggplot object with the data and the aesthetic mapping:
scatterplot = ggplot(WHO, aes(x = GNI, y = FertilityRate))
# Add the geom_point geometry
scatterplot + geom_point()

# Make a line graph instead:
scatterplot + geom_line()

rr # Switch back to our points: scatterplot + geom_point()

# Redo the plot with blue triangles instead of circles:
scatterplot + geom_point(color = "blue", size = 3, shape = 21)

# Another option:
scatterplot + geom_point(color = "darkred", size = 3, shape = 8)

# Add a title to the plot:
scatterplot +
geom_point(colour = "blue", size = 3, shape = 17) +
ggtitle("Fertility Rate vs. Gross National Income")

7.1.2 儲存圖檔
# Save our plot:
fertilityGNIplot = scatterplot +
geom_point(colour = "blue", size = 3, shape = 17) +
ggtitle("Fertility Rate vs. Gross National Income")
pdf("MyPlot.pdf")
print(fertilityGNIplot)
dev.off() #把pdf關起來
null device
1
7.1.3 圖形元件屬性
# Color the points by region:
ggplot(WHO, aes(x = GNI, y = FertilityRate, color = Region)) +
geom_point()

rr # Color the points according to life expectancy: ggplot(WHO, aes(x = GNI, y = FertilityRate, color = LifeExpectancy)) + geom_point()

rr # Is the fertility rate of a country was a good predictor of the # percentage of the population under 15? ggplot(WHO, aes(x = FertilityRate, y = Under15)) + geom_point()

7.1.4 數值尺度比例轉換
rr # Let’s try a log transformation: ggplot(WHO, aes(x = log(FertilityRate), y = Under15)) + geom_point()

7.1.5 回歸趨勢線
rr # Simple linear regression model to predict the percentage of the # population under 15, using the log of the fertility rate: mod = lm(Under15 ~ log(FertilityRate), data = WHO) summary(mod)
Call:
lm(formula = Under15 ~ log(FertilityRate), data = WHO)
Residuals:
Min 1Q Median 3Q Max
-10.313 -1.774 0.045 1.744 7.717
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 7.654 0.448 17.1 <2e-16 ***
log(FertilityRate) 22.055 0.418 52.8 <2e-16 ***
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Residual standard error: 2.65 on 181 degrees of freedom
(11 observations deleted due to missingness)
Multiple R-squared: 0.939, Adjusted R-squared: 0.939
F-statistic: 2.79e+03 on 1 and 181 DF, p-value: <2e-16
rr # Add this regression line to our plot: ggplot(WHO, aes(x = log(FertilityRate), y = Under15)) + geom_point() + stat_smooth(method = )

7.1.6 趨勢線的信賴區間
rr # 99% confidence interval ggplot(WHO, aes(x = log(FertilityRate), y = Under15)) + geom_point() + stat_smooth(method = , level = 0.99)

rr # No confidence interval in the plot ggplot(WHO, aes(x = log(FertilityRate), y = Under15)) + geom_point() + stat_smooth(method = , se = FALSE)

rr # Change the color of the regression line: ggplot(WHO, aes(x = log(FertilityRate), y = Under15)) + geom_point() + stat_smooth(method = , colour = )

7.1.7 分群點狀圖
rr # quiz-1: ggplot(WHO, aes(x = FertilityRate, y = Under15, col=Region)) + scale_color_brewer(palette=) + geom_point()

7.1.8 分格點狀圖
rr # quiz-1: ggplot(WHO, aes(x = log(Population), y = GNI, color=Region)) + geom_point() + stat_smooth(method=‘lm’) + facet_wrap(~Region) + theme_bw()

LS0tDQp0aXRsZTogIkFTNy0wQSBnZ3Bsb3QyIOe5quWcluWll+S7tiINCm91dHB1dDogaHRtbF9ub3RlYm9vaw0KLS0tDQoNCjxicj4NCg0KYGBge3J9DQpTeXMuc2V0bG9jYWxlKCJMQ19BTEwiLCJDIikNCnBhY2thZ2VzID0gYygNCiAgImRwbHlyIiwiZ2dwbG90MiIsImQzaGVhdG1hcCIsImdvb2dsZVZpcyIsImRldnRvb2xzIiwicGxvdGx5IiwgInhnYm9vc3QiLA0KICAibWFncml0dHIiLCJjYVRvb2xzIiwiUk9DUiIsImNvcnJwbG90IiwgInJwYXJ0IiwgInJwYXJ0LnBsb3QiLA0KICAiZG9QYXJhbGxlbCIsICJjYXJldCIsICJnbG1uZXQiLCAiTWF0cml4IiwgImUxMDcxIiwgInJhbmRvbUZvcmVzdCIsDQogICJmbGV4Y2x1c3QiLCAiRmFjdG9NaW5lUiIsICJmYWN0b2V4dHJhIiwgIm1hcHMiLCAiZ2dtYXAiLCAiaWdyYXBoIiwgInJnbCIsDQogICJ0bSIsICJTbm93YmFsbEMiLCAid29yZGNsb3VkIiwgInNsYW0iLCAiTWF0cml4IiwgIlJDb2xvckJyZXdlciINCiAgKQ0KZXhpc3RpbmcgPSBhcy5jaGFyYWN0ZXIoaW5zdGFsbGVkLnBhY2thZ2VzKClbLDFdKQ0KZm9yKHBrZyBpbiBwYWNrYWdlc1shKHBhY2thZ2VzICVpbiUgZXhpc3RpbmcpXSkgaW5zdGFsbC5wYWNrYWdlcyhwa2cpDQpgYGANCg0KYGBge3IgZWNobz1ULCBtZXNzYWdlPUYsIGNhY2hlPUYsIHdhcm5pbmc9Rn0NCnJtKGxpc3Q9bHMoYWxsPVQpKQ0Kb3B0aW9ucyhkaWdpdHM9NCwgc2NpcGVuPTEyKQ0KbGlicmFyeShkcGx5cikNCmxpYnJhcnkoZ2dwbG90MikNCmxpYnJhcnkobWFwcykNCmxpYnJhcnkoZ2dtYXApDQpgYGANCg0KLSAtIC0NCg0KIyMjIDcuMSBgZ2dwbG90MmAg57mq5ZyW5aWX5Lu2DQoNCiMjIyMjIDcuMS4xIOWfuuacrOm7nueLgOWclg0KYGBge3J9DQpXSE8gPSByZWFkLmNzdigiZGF0YS9XSE8uY3N2IikNCmBgYA0KDQpgYGB7cn0NCiMgQmFzaWMgUGxvdCBpbiBSIA0KcGxvdChXSE8kR05JLCBXSE8kRmVydGlsaXR5UmF0ZSkNCmBgYA0KDQpgYGB7cn0NCmxpYnJhcnkoZ2dwbG90MikNCiMgQ3JlYXRlIHRoZSBnZ3Bsb3Qgb2JqZWN0IHdpdGggdGhlIGRhdGEgYW5kIHRoZSBhZXN0aGV0aWMgbWFwcGluZzoNCnNjYXR0ZXJwbG90ID0gZ2dwbG90KFdITywgYWVzKHggPSBHTkksIHkgPSBGZXJ0aWxpdHlSYXRlKSkNCmBgYA0KDQpgYGB7cn0NCiMgQWRkIHRoZSBnZW9tX3BvaW50IGdlb21ldHJ5DQpzY2F0dGVycGxvdCArIGdlb21fcG9pbnQoKSANCmBgYA0KDQpgYGB7cn0NCiMgTWFrZSBhIGxpbmUgZ3JhcGggaW5zdGVhZDoNCnNjYXR0ZXJwbG90ICsgZ2VvbV9saW5lKCkNCmBgYA0KDQpgYGB7cn0NCiMgU3dpdGNoIGJhY2sgdG8gb3VyIHBvaW50czoNCnNjYXR0ZXJwbG90ICsgZ2VvbV9wb2ludCgpDQpgYGANCg0KYGBge3J9DQojIFJlZG8gdGhlIHBsb3Qgd2l0aCBibHVlIHRyaWFuZ2xlcyBpbnN0ZWFkIG9mIGNpcmNsZXM6DQpzY2F0dGVycGxvdCArIGdlb21fcG9pbnQoY29sb3IgPSAiYmx1ZSIsIHNpemUgPSAzLCBzaGFwZSA9IDIxKQ0KYGBgDQoNCmBgYHtyfQ0KIyBBbm90aGVyIG9wdGlvbjoNCnNjYXR0ZXJwbG90ICsgZ2VvbV9wb2ludChjb2xvciA9ICJkYXJrcmVkIiwgc2l6ZSA9IDMsIHNoYXBlID0gOCkNCmBgYA0KDQpgYGB7cn0NCiMgQWRkIGEgdGl0bGUgdG8gdGhlIHBsb3Q6DQpzY2F0dGVycGxvdCArIA0KICBnZW9tX3BvaW50KGNvbG91ciA9ICJibHVlIiwgc2l6ZSA9IDMsIHNoYXBlID0gMTcpICsgDQogIGdndGl0bGUoIkZlcnRpbGl0eSBSYXRlIHZzLiBHcm9zcyBOYXRpb25hbCBJbmNvbWUiKQ0KYGBgDQoNCg0KIyMjIyMgNy4xLjIg5YSy5a2Y5ZyW5qqUDQpgYGB7cn0NCiMgU2F2ZSBvdXIgcGxvdDoNCmZlcnRpbGl0eUdOSXBsb3QgPSBzY2F0dGVycGxvdCArIA0KICBnZW9tX3BvaW50KGNvbG91ciA9ICJibHVlIiwgc2l6ZSA9IDMsIHNoYXBlID0gMTcpICsgDQogIGdndGl0bGUoIkZlcnRpbGl0eSBSYXRlIHZzLiBHcm9zcyBOYXRpb25hbCBJbmNvbWUiKQ0KDQpwZGYoIk15UGxvdC5wZGYiKQ0KcHJpbnQoZmVydGlsaXR5R05JcGxvdCkNCmRldi5vZmYoKSAj5oqKcGRm6Zec6LW35L6GDQoNCmBgYA0KDQojIyMjIyA3LjEuMyDlnJblvaLlhYPku7blsazmgKcNCmBgYHtyfQ0KIyBDb2xvciB0aGUgcG9pbnRzIGJ5IHJlZ2lvbjoNCmdncGxvdChXSE8sIGFlcyh4ID0gR05JLCB5ID0gRmVydGlsaXR5UmF0ZSwgY29sb3IgPSBSZWdpb24pKSArIA0KICBnZW9tX3BvaW50KCkgI1JlZ2lvbuaYr+mhnuWIpeiuiuaVuA0KYGBgDQoNCmBgYHtyfQ0KIyBDb2xvciB0aGUgcG9pbnRzIGFjY29yZGluZyB0byBsaWZlIGV4cGVjdGFuY3k6DQpnZ3Bsb3QoV0hPLCBhZXMoeCA9IEdOSSwgeSA9IEZlcnRpbGl0eVJhdGUsIGNvbG9yID0gTGlmZUV4cGVjdGFuY3kpKSArIA0KICBnZW9tX3BvaW50KCkgI0xpZmVFeHBlY3RhbmN55piv6YCj57qM6K6K5pW4DQpgYGANCg0KYGBge3J9DQojIElzIHRoZSBmZXJ0aWxpdHkgcmF0ZSBvZiBhIGNvdW50cnkgd2FzIGEgZ29vZCBwcmVkaWN0b3Igb2YgdGhlIA0KIyBwZXJjZW50YWdlIG9mIHRoZSBwb3B1bGF0aW9uIHVuZGVyIDE1Pw0KZ2dwbG90KFdITywgYWVzKHggPSBGZXJ0aWxpdHlSYXRlLCB5ID0gVW5kZXIxNSkpICsgZ2VvbV9wb2ludCgpDQpgYGANCg0KIyMjIyMgNy4xLjQg5pW45YC85bC65bqm5q+U5L6L6L2J5o+bDQpgYGB7cn0NCiMgTGV0J3MgdHJ5IGEgbG9nIHRyYW5zZm9ybWF0aW9uOg0KZ2dwbG90KFdITywgYWVzKHggPSBsb2coRmVydGlsaXR5UmF0ZSksIHkgPSBVbmRlcjE1KSkgKyBnZW9tX3BvaW50KCkNCmBgYA0KDQoNCiMjIyMjIDcuMS41IOWbnuatuOi2qOWLoue3mg0KYGBge3J9DQojIFNpbXBsZSBsaW5lYXIgcmVncmVzc2lvbiBtb2RlbCB0byBwcmVkaWN0IHRoZSBwZXJjZW50YWdlIG9mIHRoZSANCiMgcG9wdWxhdGlvbiB1bmRlciAxNSwgdXNpbmcgdGhlIGxvZyBvZiB0aGUgZmVydGlsaXR5IHJhdGU6DQptb2QgPSBsbShVbmRlcjE1IH4gbG9nKEZlcnRpbGl0eVJhdGUpLCBkYXRhID0gV0hPKQ0Kc3VtbWFyeShtb2QpDQpgYGANCg0KYGBge3J9DQojIEFkZCB0aGlzIHJlZ3Jlc3Npb24gbGluZSB0byBvdXIgcGxvdDoNCmdncGxvdChXSE8sIGFlcyh4ID0gbG9nKEZlcnRpbGl0eVJhdGUpLCB5ID0gVW5kZXIxNSkpICsgDQogIGdlb21fcG9pbnQoKSArIHN0YXRfc21vb3RoKG1ldGhvZCA9ICJsbSIpDQpgYGANCg0KIyMjIyMgNy4xLjYg6Lao5Yui57ea55qE5L+h6LO05Y2A6ZaTDQpgYGB7cn0NCiMgOTklIGNvbmZpZGVuY2UgaW50ZXJ2YWwNCmdncGxvdChXSE8sIGFlcyh4ID0gbG9nKEZlcnRpbGl0eVJhdGUpLCB5ID0gVW5kZXIxNSkpICsgDQogIGdlb21fcG9pbnQoKSArIHN0YXRfc21vb3RoKG1ldGhvZCA9ICJsbSIsIGxldmVsID0gMC45OSkNCiM5OSVDSTrpgJnkupvpu57nmoQi5bmz5Z2H5YC8IuaciTk5Jeapn+acg+iQveWcqOmAmeWAi+WNgOmWkzs5OSVQSTrpgJnkupvlgIvliKXnmoQi6bueIuaciTk5Jeapn+eOh+iQveWcqOipsuWNgOmWkw0KYGBgDQoNCmBgYHtyfQ0KIyBObyBjb25maWRlbmNlIGludGVydmFsIGluIHRoZSBwbG90DQpnZ3Bsb3QoV0hPLCBhZXMoeCA9IGxvZyhGZXJ0aWxpdHlSYXRlKSwgeSA9IFVuZGVyMTUpKSArIA0KICBnZW9tX3BvaW50KCkgKyBzdGF0X3Ntb290aChtZXRob2QgPSAibG0iLCBzZSA9IEZBTFNFKQ0KYGBgDQoNCmBgYHtyfQ0KIyBDaGFuZ2UgdGhlIGNvbG9yIG9mIHRoZSByZWdyZXNzaW9uIGxpbmU6DQpnZ3Bsb3QoV0hPLCBhZXMoeCA9IGxvZyhGZXJ0aWxpdHlSYXRlKSwgeSA9IFVuZGVyMTUpKSArIA0KICBnZW9tX3BvaW50KCkgKyBzdGF0X3Ntb290aChtZXRob2QgPSAibG0iLCBjb2xvdXIgPSAib3JhbmdlIikNCmBgYA0KDQojIyMjIyA3LjEuNyDliIbnvqTpu57ni4DlnJYNCmBgYHtyfQ0KIyBxdWl6LTE6DQpnZ3Bsb3QoV0hPLCBhZXMoeCA9IEZlcnRpbGl0eVJhdGUsIHkgPSBVbmRlcjE1LCBjb2w9UmVnaW9uKSkgKyANCiAgc2NhbGVfY29sb3JfYnJld2VyKHBhbGV0dGU9IkFjY2VudCIpICsNCiAgZ2VvbV9wb2ludCgpDQpgYGANCg0KIyMjIyMgNy4xLjgg5YiG5qC86bue54uA5ZyWDQpgYGB7cn0NCiMgcXVpei0xOg0KZ2dwbG90KFdITywgYWVzKHggPSBsb2coUG9wdWxhdGlvbiksIHkgPSBHTkksIGNvbG9yPVJlZ2lvbikpICsgDQogIGdlb21fcG9pbnQoKSArIA0KICBzdGF0X3Ntb290aChtZXRob2Q9J2xtJykgKw0KICBmYWNldF93cmFwKH5SZWdpb24pICsgdGhlbWVfYncoKSAjZmFjZXRfd3JhcOaYr+WPq+S7luavj+WAi+eVq+S4gOagvA0KYGBgDQoNCjxicj4NCg0KLSAtIC0NCg0KPGJyPjxicj48YnI+PGJyPjxicj4NCg0KPHN0eWxlPg0KLmNhcHRpb24gew0KICBjb2xvcjogIzc3NzsNCiAgbWFyZ2luLXRvcDogMTBweDsNCn0NCnAgY29kZSB7DQogIHdoaXRlLXNwYWNlOiBpbmhlcml0Ow0KfQ0KcHJlIHsNCiAgd29yZC1icmVhazogbm9ybWFsOw0KICB3b3JkLXdyYXA6IG5vcm1hbDsNCiAgbGluZS1oZWlnaHQ6IDE7DQp9DQpwcmUgY29kZSB7DQogIHdoaXRlLXNwYWNlOiBpbmhlcml0Ow0KfQ0KcCxsaSB7DQogIGZvbnQtZmFtaWx5OiAiVHJlYnVjaGV0IE1TIiwgIuW+rui7n+ato+m7kemrlCIsICJNaWNyb3NvZnQgSmhlbmdIZWkiOw0KfQ0KDQoucnsNCiAgbGluZS1oZWlnaHQ6IDEuMjsNCn0NCg0KdGl0bGV7DQogIGNvbG9yOiAjY2MwMDAwOw0KICBmb250LWZhbWlseTogIlRyZWJ1Y2hldCBNUyIsICLlvq7ou5/mraPpu5Hpq5QiLCAiTWljcm9zb2Z0IEpoZW5nSGVpIjsNCn0NCg0KYm9keXsNCiAgZm9udC1mYW1pbHk6ICJUcmVidWNoZXQgTVMiLCAi5b6u6Luf5q2j6buR6auUIiwgIk1pY3Jvc29mdCBKaGVuZ0hlaSI7DQp9DQoNCmgxLGgyLGgzLGg0LGg1ew0KICBjb2xvcjogIzAwODgwMDsNCiAgZm9udC1mYW1pbHk6ICJUcmVidWNoZXQgTVMiLCAi5b6u6Luf5q2j6buR6auUIiwgIk1pY3Jvc29mdCBKaGVuZ0hlaSI7DQp9DQoNCmgzew0KICBjb2xvcjogI2IzNmIwMDsNCiAgYmFja2dyb3VuZDogI2ZmZTBiMzsNCiAgbGluZS1oZWlnaHQ6IDI7DQogIGZvbnQtd2VpZ2h0OiBib2xkOw0KfQ0KDQpoNXsNCiAgY29sb3I6ICMwMDYwMDA7DQogIGJhY2tncm91bmQ6ICNmZmZmZTA7DQogIGxpbmUtaGVpZ2h0OiAyOw0KICBmb250LXdlaWdodDogYm9sZDsNCn0NCg0KZW17DQogIGNvbG9yOiAjMDAwMGMwOw0KICBiYWNrZ3JvdW5kOiAjZjBmMGYwOw0KICB9DQo8L3N0eWxlPg0KDQo=