rm(list=ls(all=T))
options(digits=4, scipen=12)
library(dplyr)
library(ggplot2)
library(maps)
library(ggmap)
library(reshape2)

7.3 加強基本圖表

library(ggplot2)
# Load our data, which lives in intl.csv
intl = read.csv("data/intl.csv")
str(intl)
'data.frame':   8 obs. of  2 variables:
 $ Region       : Factor w/ 8 levels "Africa","Asia",..: 2 3 6 4 5 1 7 8
 $ PercentOfIntl: num  0.531 0.201 0.098 0.09 0.054 0.02 0.015 0.002
7.3.1 Bar Plot with Quantities
# We want to make a bar plot with region on the X axis
# and Percentage on the y-axis.
ggplot(intl , aes(x= Region , y = PercentOfIntl)) + geom_bar(stat = "identity") + geom_text(aes(label = PercentOfIntl))

7.3.2 Reorder by Column



7.3 全球國際學生數量

7.3.3 Data for Intl’ Students
# Now lets look again
head(intlall) 
          Citizenship UG  G SpecialUG SpecialG ExhangeVisiting Total
1             Albania  3  1         0        0               0     4
2 Antigua and Barbuda  0  0         0        1               0     1
3           Argentina  0 19         0        0               0    19
4             Armenia  3  2         0        0               0     5
5           Australia  6 32         0        0               1    39
6             Austria  0 11         0        0               5    16
7.3.4 World Map
str(world_map)
'data.frame':   99338 obs. of  6 variables:
 $ long     : num  -69.9 -69.9 -69.9 -70 -70.1 ...
 $ lat      : num  12.5 12.4 12.4 12.5 12.5 ...
 $ group    : num  1 1 1 1 1 1 1 1 1 1 ...
 $ order    : int  1 2 3 4 5 6 7 8 9 10 ...
 $ region   : chr  "Aruba" "Aruba" "Aruba" "Aruba" ...
 $ subregion: chr  NA NA NA NA ...
7.3.5 Merge Map with Data
str(world_map)
'data.frame':   63634 obs. of  12 variables:
 $ region         : chr  "Albania" "Albania" "Albania" "Albania" ...
 $ long           : num  20.5 20.4 19.5 20.5 20.4 ...
 $ lat            : num  41.3 39.8 42.5 40.1 41.5 ...
 $ group          : num  6 6 6 6 6 6 6 6 6 6 ...
 $ order          : int  789 822 870 815 786 821 818 779 879 795 ...
 $ subregion      : chr  NA NA NA NA ...
 $ UG             : num  3 3 3 3 3 3 3 3 3 3 ...
 $ G              : num  1 1 1 1 1 1 1 1 1 1 ...
 $ SpecialUG      : num  0 0 0 0 0 0 0 0 0 0 ...
 $ SpecialG       : num  0 0 0 0 0 0 0 0 0 0 ...
 $ ExhangeVisiting: num  0 0 0 0 0 0 0 0 0 0 ...
 $ Total          : int  4 4 4 4 4 4 4 4 4 4 ...
7.3.6 Plot the Map

rr ggplot(world_map, aes(x=long, y=lat, group=group)) + geom_polygon(fill=, color=) + coord_map()

7.3.7 Polygon points need to be ordered by Group

7.3.8 Identify and Fix Mismatchs between Map and Data
table(intlall$Citizenship)

                     Albania          Antigua and Barbuda                    Argentina 
                           1                            1                            1 
                     Armenia                    Australia                      Austria 
                           1                            1                            1 
                     Bahrain                   Bangladesh                      Belarus 
                           1                            1                            1 
                     Belgium                      Bolivia           Bosnia-Hercegovina 
                           1                            1                            1 
                      Brazil                     Bulgaria                     Cambodia 
                           1                            1                            1 
                    Cameroon                       Canada                        Chile 
                           1                            1                            1 
                       China                     Colombia                   Costa Rica 
                           1                            1                            1 
               Cote d'Ivoire                      Croatia                       Cyprus 
                           1                            1                            1 
              Czech Republic                      Denmark                      Ecuador 
                           1                            1                            1 
                       Egypt                  El Salvador                      Estonia 
                           1                            1                            1 
                    Ethiopia                      Finland                       France 
                           1                            1                            1 
                     Georgia                      Germany                        Ghana 
                           1                            1                            1 
                      Greece                    Guatemala                        Haiti 
                           1                            1                            1 
                   Hong Kong                      Hungary                      Iceland 
                           1                            1                            1 
                       India                    Indonesia                         Iran 
                           1                            1                            1 
                        Iraq                      Ireland                       Israel 
                           1                            1                            1 
                       Italy                      Jamaica                        Japan 
                           1                            1                            1 
                      Jordan                   Kazakhstan                        Kenya 
                           1                            1                            1 
                Korea, South                       Kuwait                       Latvia 
                           1                            1                            1 
                     Lebanon                    Lithuania                    Macedonia 
                           1                            1                            1 
                    Malaysia                    Mauritius                       Mexico 
                           1                            1                            1 
                     Moldova                     Mongolia                   Montenegro 
                           1                            1                            1 
                     Morocco                        Nepal                  Netherlands 
                           1                            1                            1 
                 New Zealand                      Nigeria                       Norway 
                           1                            1                            1 
                    Pakistan                     Paraguay                         Peru 
                           1                            1                            1 
                 Philippines                       Poland                     Portugal 
                           1                            1                            1 
                       Qatar                      Romania                       Russia 
                           1                            1                            1 
                      Rwanda                 Saudi Arabia                       Serbia 
                           1                            1                            1 
                Sierra Leone                    Singapore                     Slovakia 
                           1                            1                            1 
                     Somalia                 South Africa                        Spain 
                           1                            1                            1 
                   Sri Lanka                    St. Lucia St. Vincent & The Grenadines 
                           1                            1                            1 
                       Sudan                       Sweden                  Switzerland 
                           1                            1                            1 
                       Syria                       Taiwan                     Tanzania 
                           1                            1                            1 
                    Thailand            Trinidad & Tobago                      Tunisia 
                           1                            1                            1 
                      Turkey                       Uganda                      Ukraine 
                           1                            1                            1 
        United Arab Emirates               United Kingdom                      Unknown 
                           1                            1                            1 
                     Uruguay                    Venezuela                      Vietnam 
                           1                            1                            1 
                   West Bank                       Zambia                     Zimbabwe 
                           1                            1                            1 

7.3.9 Different Orientations



7.3 資料結構轉換

7.3.10 Reshaping before Ploting

rr library(ggplot2) library(reshape2) # Now lets load our dataframe households = read.csv(/households.csv) str(households)

'data.frame':   8 obs. of  7 variables:
 $ Year          : int  1970 1980 1990 1995 2000 2005 2010 2012
 $ MarriedWChild : num  40.3 30.9 26.3 25.5 24.1 22.9 20.9 19.6
 $ MarriedWOChild: num  30.3 29.9 29.8 28.9 28.7 28.3 28.8 29.1
 $ OtherFamily   : num  10.6 12.9 14.8 15.6 16 16.7 17.4 17.8
 $ MenAlone      : num  5.6 8.6 9.7 10.2 10.7 11.3 11.9 12.3
 $ WomenAlone    : num  11.5 14 14.9 14.7 14.8 15.3 14.8 15.2
 $ OtherNonfamily: num  1.7 3.6 4.6 5 5.7 5.6 6.2 6.1

rr # Plot it melt(households, id=) %>% ggplot(aes(x=Year, y=value, color=variable)) + geom_line(size=2) + geom_point(size=5) +
ylab(of Households)








LS0tDQp0aXRsZTogIkFTNy0wQyDkuJbnlYzlnLDlnJYiDQphdXRob3I6ICLmlr3ph4flvaMgTTA2NDAyMDAxNywgMjAxOC8wOC8wMyINCm91dHB1dDogaHRtbF9ub3RlYm9vaw0KLS0tDQoNCjxicj4NCg0KYGBge3IgZWNobz1ULCBtZXNzYWdlPUYsIGNhY2hlPUYsIHdhcm5pbmc9Rn0NCnJtKGxpc3Q9bHMoYWxsPVQpKQ0Kb3B0aW9ucyhkaWdpdHM9NCwgc2NpcGVuPTEyKQ0KbGlicmFyeShkcGx5cikNCmxpYnJhcnkoZ2dwbG90MikNCmxpYnJhcnkobWFwcykNCmxpYnJhcnkoZ2dtYXApDQpsaWJyYXJ5KHJlc2hhcGUyKQ0KYGBgDQoNCi0gLSAtDQoNCiMjIyA3LjMg5Yqg5by35Z+65pys5ZyW6KGoDQoNCmBgYHtyfQ0KbGlicmFyeShnZ3Bsb3QyKQ0KDQojIExvYWQgb3VyIGRhdGEsIHdoaWNoIGxpdmVzIGluIGludGwuY3N2DQppbnRsID0gcmVhZC5jc3YoImRhdGEvaW50bC5jc3YiKQ0Kc3RyKGludGwpDQpgYGANCg0KIyMjIyMgNy4zLjEgQmFyIFBsb3Qgd2l0aCBRdWFudGl0aWVzDQpgYGB7cn0NCiMgV2Ugd2FudCB0byBtYWtlIGEgYmFyIHBsb3Qgd2l0aCByZWdpb24gb24gdGhlIFggYXhpcw0KIyBhbmQgUGVyY2VudGFnZSBvbiB0aGUgeS1heGlzLg0KZ2dwbG90KGludGwgLCBhZXMoeD0gUmVnaW9uICwgeSA9IFBlcmNlbnRPZkludGwpKSArIGdlb21fYmFyKHN0YXQgPSAiaWRlbnRpdHkiKSArIGdlb21fdGV4dChhZXMobGFiZWwgPSBQZXJjZW50T2ZJbnRsKSkNCmBgYA0KDQojIyMjIyA3LjMuMiBSZW9yZGVyIGJ5IENvbHVtbg0KYGBge3J9DQojIE1ha2UgUmVnaW9uIGFuIG9yZGVyZWQgZmFjdG9yDQojIFdlIGNhbiBkbyB0aGlzIHdpdGggdGhlIHJlLW9yZGVyIGNvbW1hbmQgYW5kIHRyYW5zZm9ybSBjb21tYW5kLiANCmludGwgPSB0cmFuc2Zvcm0oaW50bCAsIFJlZ2lvbiA9IHJlb3JkZXIoUmVnaW9uICwtIFBlcmNlbnRPZkludGwpKQ0KDQojIE1ha2UgdGhlIHBlcmNlbnRhZ2VzIG91dCBvZiAxMDAgaW5zdGVhZCBvZiBmcmFjdGlvbnMNCmludGwkUGVyY2VudE9mSW50bCA9IGludGwkUGVyY2VudE9mSW50bCAqIDEwMA0KDQojIE1ha2UgdGhlIHBsb3QNCmdncGxvdChpbnRsICwgYWVzKHggPSBSZWdpb24gLCB5ID0gUGVyY2VudE9mSW50bCkpICsgZ2VvbV9iYXIoc3RhdCA9ICJpZGVudGl0eSIgLCBmaWxsID0gImRhcmsgYmx1ZSIpICsgZ2VvbV90ZXh0KGFlcyhsYWJlbCA9IFBlcmNlbnRPZkludGwpLCB2anVzdCA9IC0wLjQpICsgeWxhYigiUGVyY2VudCBvZiBJbnRlcm5hdGlvbmFsIFN0dWRlbnRzIikgKyB0aGVtZShheGlzLnRpdGxlLnggPSBlbGVtZW50X2JsYW5rKCksIGF4aXMudGV4dC54ID0gZWxlbWVudF90ZXh0KGFuZ2xlID0gNDUgLCBoanVzdD0xKSkNCg0KYGBgDQo8YnI+DQoNCi0gLSAtDQoNCiMjIyA3LjMg5YWo55CD5ZyL6Zqb5a2455Sf5pW46YePDQoNCiMjIyMjIDcuMy4zIERhdGEgZm9yIEludGwnIFN0dWRlbnRzDQpgYGB7cn0NCmxpYnJhcnkoZ2dtYXApDQoNCiMgTG9hZCBpbiB0aGUgaW50ZXJuYXRpb25hbCBzdHVkZW50IGRhdGENCmludGxhbGwgPSByZWFkLmNzdigiZGF0YS9pbnRsYWxsLmNzdiIsc3RyaW5nc0FzRmFjdG9ycz1GQUxTRSkNCg0KIyBMZXRzIGxvb2sgYXQgdGhlIGZpcnN0IGZldyByb3dzDQojIGhlYWQoaW50bGFsbCkNCg0KIyBUaG9zZSBOQXMgYXJlIHJlYWxseSAwcywgYW5kIHdlIGNhbiByZXBsYWNlIHRoZW0gZWFzaWx5DQppbnRsYWxsW2lzLm5hKGludGxhbGwpXSA9IDANCg0KIyBOb3cgbGV0cyBsb29rIGFnYWluDQpoZWFkKGludGxhbGwpIA0KYGBgDQoNCiMjIyMjIDcuMy40IFdvcmxkIE1hcA0KYGBge3J9DQojIExvYWQgdGhlIHdvcmxkIG1hcA0Kd29ybGRfbWFwID0gbWFwX2RhdGEoIndvcmxkIikNCnN0cih3b3JsZF9tYXApDQpgYGANCg0KIyMjIyMgNy4zLjUgTWVyZ2UgTWFwIHdpdGggRGF0YQ0KYGBge3J9DQojIExldHMgbWVyZ2UgaW50bGFsbCBpbnRvIHdvcmxkX21hcCB1c2luZyB0aGUgbWVyZ2UgY29tbWFuZA0KIyBtZXJnZSgp77ya5aaC5p6c6LOH5paZ5qyE5L2N5LiA5qij77yM5bCx5pyD5oqK55uu5qiZ6LOH5paZ5b6e5b6M6Z2i6KGo55qE6LOH5paZ5pS+5YWl5YmN6Z2i6KGoDQp3b3JsZF9tYXAgPSBtZXJnZSh3b3JsZF9tYXAsIGludGxhbGwsIGJ5LnggPSJyZWdpb24iLCBieS55ID0gIkNpdGl6ZW5zaGlwIikNCnN0cih3b3JsZF9tYXApDQpgYGANCg0KIyMjIyMgNy4zLjYgUGxvdCB0aGUgTWFwDQpgYGB7cn0NCmdncGxvdCh3b3JsZF9tYXAsIGFlcyh4PWxvbmcsIHk9bGF0LCBncm91cD1ncm91cCkpICsNCiAgZ2VvbV9wb2x5Z29uKGZpbGw9IndoaXRlIiwgY29sb3I9ImJsYWNrIikgKw0KICBjb29yZF9tYXAoIm1lcmNhdG9yIikNCmBgYA0KDQojIyMjIyA3LjMuNyBQb2x5Z29uIHBvaW50cyBuZWVkIHRvIGJlIG9yZGVyZWQgYnkgR3JvdXANCmBgYHtyfQ0KIyBSZW9yZGVyIHRoZSBkYXRhDQp3b3JsZF9tYXAgPSB3b3JsZF9tYXBbb3JkZXIod29ybGRfbWFwJGdyb3VwLCB3b3JsZF9tYXAkb3JkZXIpLF0NCg0KIyBSZWRvIHRoZSBwbG90DQpnZ3Bsb3Qod29ybGRfbWFwICwgYWVzKHg9IGxvbmcgLCB5ID0gbGF0ICwgZ3JvdXAgPSBncm91cCApKSArIGdlb21fcG9seWdvbihmaWxsID0gIndoaXRlIiAsIGNvbG9yID0gImJsYWNrIikgIyArIGNvb3JkX21hcCgiTWVyY2F0b3IiKQ0KYGBgDQoNCiMjIyMjIDcuMy44IElkZW50aWZ5IGFuZCBGaXggTWlzbWF0Y2hzIGJldHdlZW4gTWFwIGFuZCBEYXRhDQpgYGB7cn0NCiMgTGV0cyBsb29rIGZvciBDaGluYQ0KI+aJvuWHuuaciWNoaW5h55qE5YWn5a65DQpncmVwKCJDaGluYSIsIGludGxhbGwkQ2l0aXplbnNoaXAsIGlnbm9yZS5jYXNlPVQsIHZhbHVlPVQpIA0KZ3JlcCgiQ2hpbmEiLCB1bmlxdWUobWFwX2RhdGEoIndvcmxkIikkcmVnaW9uKSwgaWdub3JlLmNhc2U9VCwgdmFsdWU9VCkgDQoNCiN0YWJsZShpbnRsYWxsJENpdGl6ZW5zaGlwKQ0KYGBgDQoNCmBgYHtyfQ0KIyBMZXRzICJmaXgiIHRoYXQgaW4gdGhlIGludGxhbGwgZGF0YXNldA0KaW50bGFsbCRDaXRpemVuc2hpcFtpbnRsYWxsJENpdGl6ZW5zaGlwPT0iQ2hpbmEgKFBlb3BsZSdzIFJlcHVibGljIE9mKSJdID0gICJDaGluYSINCg0KIyBXZSdsbCByZXBlYXQgb3VyIG1lcmdlIGFuZCBvcmRlciBmcm9tIGJlZm9yZQ0KI+azqOaEj+Wll+eUqOihjOaUv+WNgOWcsOWcluaZgu+8jOmcgOmBv+WFjemHjeeWig0Kd29ybGRfbWFwID0gbWVyZ2UobWFwX2RhdGEoIndvcmxkIiksIGludGxhbGwgLCBieS54ID0gInJlZ2lvbiIgLCBieS55ID0gIkNpdGl6ZW5zaGlwIiApDQp3b3JsZF9tYXAgPSB3b3JsZF9tYXBbb3JkZXIod29ybGRfbWFwJGdyb3VwLCB3b3JsZF9tYXAkb3JkZXIpLF0NCg0KZ2dwbG90KHdvcmxkX21hcCAsIGFlcyh4PSBsb25nICwgeSA9IGxhdCAsIGdyb3VwID0gZ3JvdXAgKSkgKyBnZW9tX3BvbHlnb24oYWVzKGZpbGwgPSBUb3RhbCkgLCBjb2xvciA9ICJibGFjayIpICMrIGNvb3JkX21hcCgiTWVyY2F0b3IiKQ0KYGBgDQoNCiMjIyMjIDcuMy45IERpZmZlcmVudCBPcmllbnRhdGlvbnMNCmBgYHtyfQ0KIyBXZSBjYW4gdHJ5IG90aGVyIHByb2plY3Rpb25zIC0gdGhpcyBvbmUgaXMgdmlzdWFsbHkgaW50ZXJlc3RpbmcNCmdncGxvdCh3b3JsZF9tYXAgLCBhZXMoeD0gbG9uZyAsIHkgPSBsYXQgLCBncm91cCA9IGdyb3VwICkpICsgZ2VvbV9wb2x5Z29uKGFlcyhmaWxsID0gVG90YWwpICwgY29sb3IgPSAiYmxhY2siKSArIGNvb3JkX21hcCgib3J0aG8iICwgb3JpZW50YXRpb24gPSBjKDIwLDMwLDApKQ0KYGBgDQoNCmBgYHtyfQ0KZ2dwbG90KHdvcmxkX21hcCAsIGFlcyh4PSBsb25nICwgeSA9IGxhdCAsIGdyb3VwID0gZ3JvdXAgKSkgKyBnZW9tX3BvbHlnb24oYWVzKGZpbGwgPSBUb3RhbCkgLCBjb2xvciA9ICJibGFjayIpICsgY29vcmRfbWFwKCJvcnRobyIgLCBvcmllbnRhdGlvbiA9IGMoLTM3LDE3NSwwKSkNCg0KYGBgDQo8YnI+DQoNCi0gLSAtDQoNCiMjIyA3LjMg6LOH5paZ57WQ5qeL6L2J5o+bDQoNCiMjIyMjIDcuMy4xMCBSZXNoYXBpbmcgYmVmb3JlIFBsb3RpbmcNCmBgYHtyfQ0KbGlicmFyeShnZ3Bsb3QyKQ0KbGlicmFyeShyZXNoYXBlMikNCiMgTm93IGxldHMgbG9hZCBvdXIgZGF0YWZyYW1lDQpob3VzZWhvbGRzID0gcmVhZC5jc3YoImRhdGEvaG91c2Vob2xkcy5jc3YiKQ0Kc3RyKGhvdXNlaG9sZHMpDQpgYGANCg0KYGBge3J9DQojIFBsb3QgaXQNCm1lbHQoaG91c2Vob2xkcywgaWQ9IlllYXIiKSAlPiUgDQogIGdncGxvdChhZXMoeD1ZZWFyLCB5PXZhbHVlLCBjb2xvcj12YXJpYWJsZSkpICsNCiAgZ2VvbV9saW5lKHNpemU9MikgKyBnZW9tX3BvaW50KHNpemU9NSkgKyAgDQogIHlsYWIoIlBlcmNlbnRhZ2Ugb2YgSG91c2Vob2xkcyIpDQpgYGANCjxicj4NCg0KLSAtIC0NCg0KPGJyPjxicj48YnI+PGJyPjxicj4NCg0KPHN0eWxlPg0KLmNhcHRpb24gew0KICBjb2xvcjogIzc3NzsNCiAgbWFyZ2luLXRvcDogMTBweDsNCn0NCnAgY29kZSB7DQogIHdoaXRlLXNwYWNlOiBpbmhlcml0Ow0KfQ0KcHJlIHsNCiAgd29yZC1icmVhazogbm9ybWFsOw0KICB3b3JkLXdyYXA6IG5vcm1hbDsNCiAgbGluZS1oZWlnaHQ6IDE7DQp9DQpwcmUgY29kZSB7DQogIHdoaXRlLXNwYWNlOiBpbmhlcml0Ow0KfQ0KcCxsaSB7DQogIGZvbnQtZmFtaWx5OiAiVHJlYnVjaGV0IE1TIiwgIuW+rui7n+ato+m7kemrlCIsICJNaWNyb3NvZnQgSmhlbmdIZWkiOw0KfQ0KDQoucnsNCiAgbGluZS1oZWlnaHQ6IDEuMjsNCn0NCg0KdGl0bGV7DQogIGNvbG9yOiAjY2MwMDAwOw0KICBmb250LWZhbWlseTogIlRyZWJ1Y2hldCBNUyIsICLlvq7ou5/mraPpu5Hpq5QiLCAiTWljcm9zb2Z0IEpoZW5nSGVpIjsNCn0NCg0KYm9keXsNCiAgZm9udC1mYW1pbHk6ICJUcmVidWNoZXQgTVMiLCAi5b6u6Luf5q2j6buR6auUIiwgIk1pY3Jvc29mdCBKaGVuZ0hlaSI7DQp9DQoNCmgxLGgyLGgzLGg0LGg1ew0KICBjb2xvcjogIzAwODgwMDsNCiAgZm9udC1mYW1pbHk6ICJUcmVidWNoZXQgTVMiLCAi5b6u6Luf5q2j6buR6auUIiwgIk1pY3Jvc29mdCBKaGVuZ0hlaSI7DQp9DQoNCmgzew0KICBjb2xvcjogI2IzNmIwMDsNCiAgYmFja2dyb3VuZDogI2ZmZTBiMzsNCiAgbGluZS1oZWlnaHQ6IDI7DQogIGZvbnQtd2VpZ2h0OiBib2xkOw0KfQ0KDQpoNXsNCiAgY29sb3I6ICMwMDYwMDA7DQogIGJhY2tncm91bmQ6ICNmZmZmZTA7DQogIGxpbmUtaGVpZ2h0OiAyOw0KICBmb250LXdlaWdodDogYm9sZDsNCn0NCg0KZW17DQogIGNvbG9yOiAjMDAwMGMwOw0KICBiYWNrZ3JvdW5kOiAjZjBmMGYwOw0KICB9DQo8L3N0eWxlPg0KDQo=