Στην ενότητα αυτή θα εξετάσουμε τον Δείκτη Αντίληψης Διαφθοράς (CPI) της οργάνωσης Transparency International. Αυτός μετρά πώς αντιλαμβάνονται τη διαφθορά:

  • εμπειρογνώμονες (αναλυτές, ακαδημαϊκοί κ.τ.λ.),

  • στελέχη επιχειρήσεων,

  • διεθνείς οργανισμοί.

Οι χώρες βαθμολογούνται από 0 έως 100:

  • 0 = πολύ υψηλή διαφθορά,

  • 100 = πολύ χαμηλή διαφθορά.

Ο δείκτης αυτός έχει υποστεί διάφορες κριτικές. Ακολουθούν κάποιες (βλ. εδώ):

  • Η διαφθορά είναι υπερβολικά περίπλοκη έννοια για να αποτυπωθεί με έναν και μόνο βαθμό.

  • Μετρώντας αντιλήψεις περί διαφθοράς, αντί για τη διαφθορά καθαυτή, μπορεί να ενισχυθούν υπάρχοντα στερεότυπα και κλισέ.

  • Ο Δείκτης μετρά μόνο τη διαφθορά του δημόσιου τομέα, αγνοώντας τον ιδιωτικό. Αυτό σημαίνει, για παράδειγμα, ότι το πολύ γνωστό σκάνδαλο Libor, η υπόθεση Odebrecht και το σκάνδαλο εκπομπών της VW δεν υπολογίζονται ως πράξεις διαφθοράς.

  • Η Transparency International έχει προειδοποιήσει ότι μια χώρα με «καθαρή» βαθμολογία CPI μπορεί παρ’ όλα αυτά να συνδέεται με διαφθορά διεθνώς. Για παράδειγμα, ενώ η Σουηδία είχε την 3η καλύτερη βαθμολογία CPI το 2015, μία κρατική της εταιρεία, η TeliaSonera, αντιμετώπιζε κατηγορίες για δωροδοκία στο Ουζμπεκιστάν.

Εν προκειμένω δεν θα ασχοληθούμε με την αξιολόγηση του δείκτη CPI, αλλά με την παρουσίασή του πάνω σε έναν χάρτη.

Αρχικά περνάμε τα δεδομένα μας στην R.

cpi_data <- read.csv(text = "Score,Country,Rank
90,Denmark,1
88,Finland,2
84,Singapore,3
83,New Zealand,4
81,Luxembourg,5
81,Norway,5
81,Switzerland,5
80,Sweden,8
78,Netherlands,9
77,Australia,10
77,Iceland,10
77,Ireland,10
76,Estonia,13
76,Uruguay,13
75,Canada,15
75,Germany,15
74,Hong Kong,17
72,Bhutan,18
72,Seychelles,18
71,Japan,20
71,United Kingdom,20
69,Belgium,22
68,Barbados,23
68,United Arab Emirates,23
67,Austria,25
67,France,25
67,Taiwan,25
65,Bahamas,28
65,United States of America,28
64,Israel,30
64,South Korea,30
63,Chile,32
63,Lithuania,32
63,Saint Vincent and the Grenadines,32
62,Cabo Verde,35
60,Dominica,36
60,Slovenia,36
59,Latvia,38
59,Qatar,38
59,Saint Lucia,38
59,Saudi Arabia,38
58,Costa Rica,42
57,Botswana,43
57,Portugal,43
57,Rwanda,43
56,Cyprus,46
56,Czechia,46
56,Grenada,46
56,Spain,46
55,Fiji,50
55,Oman,50
54,Italy,52
53,Bahrain,53
53,Georgia,53
53,Poland,53
51,Mauritius,56
50,Malaysia,57
50,Vanuatu,57
49,Greece,59
49,Jordan,59
49,Namibia,59
49,Slovakia,59
47,Armenia,63
47,Croatia,63
46,Kuwait,65
46,Malta,65
46,Montenegro,65
46,Romania,65
45,Benin,69
45,Côte d'Ivoire,69
45,Sao Tome and Principe,69
45,Senegal,69
44,Jamaica,73
44,Kosovo,73
44,Timor-Leste,73
43,Bulgaria,76
43,China,76
43,Moldova,76
43,Solomon Islands,76
42,Albania,80
42,Ghana,80
41,Burkina Faso,82
41,Cuba,82
41,Hungary,82
41,South Africa,82
41,Tanzania,82
41,Trinidad and Tobago,82
40,Kazakhstan,88
40,North Macedonia,88
40,Suriname,88
40,Vietnam,88
39,Colombia,92
39,Guyana,92
39,Tunisia,92
39,Zambia,92
38,Gambia,96
38,India,96
38,Maldives,96
37,Argentina,99
37,Ethiopia,99
37,Indonesia,99
37,Lesotho,99
37,Morocco,99
36,Dominican Republic,104
35,Serbia,105
35,Ukraine,105
34,Algeria,107
34,Brazil,107
34,Malawi,107
34,Nepal,107
34,Niger,107
34,Thailand,107
34,Turkey,107
33,Belarus,114
33,Bosnia and Herzegovina,114
33,Laos,114
33,Mongolia,114
33,Panama,114
33,Philippines,114
33,Sierra Leone,114
32,Angola,121
32,Ecuador,121
32,Kenya,121
32,Sri Lanka,121
32,Togo,121
32,Uzbekistan,121
31,Djibouti,127
31,Papua New Guinea,127
31,Peru,127
30,Egypt,130
30,El Salvador,130
30,Mauritania,130
28,Bolivia,133
28,Guinea,133
27,Eswatini,135
27,Gabon,135
27,Liberia,135
27,Mali,135
27,Pakistan,135
26,Cameroon,140
26,Iraq,140
26,Madagascar,140
26,Mexico,140
26,Nigeria,140
26,Uganda,140
25,Guatemala,146
25,Kyrgyzstan,146
25,Mozambique,146
24,Central African Republic,149
24,Paraguay,149
23,Bangladesh,151
23,Congo,151
23,Iran,151
22,Azerbaijan,154
22,Honduras,154
22,Lebanon,154
22,Russia,154
21,Cambodia,158
21,Chad,158
21,Comoros,158
21,Guinea-Bissau,158
21,Zimbabwe,158
20,Democratic Republic of the Congo,163
19,Tajikistan,164
17,Afghanistan,165
17,Burundi,165
17,Turkmenistan,165
16,Haiti,168
16,Myanmar,168
15,North Korea,170
15,Sudan,170
14,Nicaragua,172
13,Equatorial Guinea,173
13,Eritrea,173
13,Libya,173
13,Yemen,173
12,Syria,177
10,Venezuela,178
9,Somalia,179
8,South Sudan,180")

Ο πίνακας έχει ως ακολούθως.

Score Country Rank
90 Denmark 1
88 Finland 2
84 Singapore 3
83 New Zealand 4
81 Luxembourg 5
81 Norway 5
81 Switzerland 5
80 Sweden 8
78 Netherlands 9
77 Australia 10
77 Iceland 10
77 Ireland 10
76 Estonia 13
76 Uruguay 13
75 Canada 15
75 Germany 15
74 Hong Kong 17
72 Bhutan 18
72 Seychelles 18
71 Japan 20
71 United Kingdom 20
69 Belgium 22
68 Barbados 23
68 United Arab Emirates 23
67 Austria 25
67 France 25
67 Taiwan 25
65 Bahamas 28
65 United States of America 28
64 Israel 30
64 South Korea 30
63 Chile 32
63 Lithuania 32
63 Saint Vincent and the Grenadines 32
62 Cabo Verde 35
60 Dominica 36
60 Slovenia 36
59 Latvia 38
59 Qatar 38
59 Saint Lucia 38
59 Saudi Arabia 38
58 Costa Rica 42
57 Botswana 43
57 Portugal 43
57 Rwanda 43
56 Cyprus 46
56 Czechia 46
56 Grenada 46
56 Spain 46
55 Fiji 50
55 Oman 50
54 Italy 52
53 Bahrain 53
53 Georgia 53
53 Poland 53
51 Mauritius 56
50 Malaysia 57
50 Vanuatu 57
49 Greece 59
49 Jordan 59
49 Namibia 59
49 Slovakia 59
47 Armenia 63
47 Croatia 63
46 Kuwait 65
46 Malta 65
46 Montenegro 65
46 Romania 65
45 Benin 69
45 Côte d’Ivoire 69
45 Sao Tome and Principe 69
45 Senegal 69
44 Jamaica 73
44 Kosovo 73
44 Timor-Leste 73
43 Bulgaria 76
43 China 76
43 Moldova 76
43 Solomon Islands 76
42 Albania 80
42 Ghana 80
41 Burkina Faso 82
41 Cuba 82
41 Hungary 82
41 South Africa 82
41 Tanzania 82
41 Trinidad and Tobago 82
40 Kazakhstan 88
40 North Macedonia 88
40 Suriname 88
40 Vietnam 88
39 Colombia 92
39 Guyana 92
39 Tunisia 92
39 Zambia 92
38 Gambia 96
38 India 96
38 Maldives 96
37 Argentina 99
37 Ethiopia 99
37 Indonesia 99
37 Lesotho 99
37 Morocco 99
36 Dominican Republic 104
35 Serbia 105
35 Ukraine 105
34 Algeria 107
34 Brazil 107
34 Malawi 107
34 Nepal 107
34 Niger 107
34 Thailand 107
34 Turkey 107
33 Belarus 114
33 Bosnia and Herzegovina 114
33 Laos 114
33 Mongolia 114
33 Panama 114
33 Philippines 114
33 Sierra Leone 114
32 Angola 121
32 Ecuador 121
32 Kenya 121
32 Sri Lanka 121
32 Togo 121
32 Uzbekistan 121
31 Djibouti 127
31 Papua New Guinea 127
31 Peru 127
30 Egypt 130
30 El Salvador 130
30 Mauritania 130
28 Bolivia 133
28 Guinea 133
27 Eswatini 135
27 Gabon 135
27 Liberia 135
27 Mali 135
27 Pakistan 135
26 Cameroon 140
26 Iraq 140
26 Madagascar 140
26 Mexico 140
26 Nigeria 140
26 Uganda 140
25 Guatemala 146
25 Kyrgyzstan 146
25 Mozambique 146
24 Central African Republic 149
24 Paraguay 149
23 Bangladesh 151
23 Congo 151
23 Iran 151
22 Azerbaijan 154
22 Honduras 154
22 Lebanon 154
22 Russia 154
21 Cambodia 158
21 Chad 158
21 Comoros 158
21 Guinea-Bissau 158
21 Zimbabwe 158
20 Democratic Republic of the Congo 163
19 Tajikistan 164
17 Afghanistan 165
17 Burundi 165
17 Turkmenistan 165
16 Haiti 168
16 Myanmar 168
15 North Korea 170
15 Sudan 170
14 Nicaragua 172
13 Equatorial Guinea 173
13 Eritrea 173
13 Libya 173
13 Yemen 173
12 Syria 177
10 Venezuela 178
9 Somalia 179
8 South Sudan 180

Στόχος μας είναι να φτιάξουμε έναν παγκόσμιο χάρτη, όπου θα αποτυπώνονται χρωματικά τα παραάνω δεδομένα. Ο εν λόγω χάρτης ονομάζεται χωροπληθής χάρτης. Για να γίνει αυτό ψάχνουμε να βρούμε γεωχωρικά δεδομένα (όπως Shapefiles, GeoJSON, ή GeoPackage) που αφορούν τις χώρες σε παγκόσμιο χάρτη και προς τούτου γκουγκλάτρουμε:

  • Για Γενικά Δεδομένα (Shapefiles)

    • world countries shapefile free

    • global administrative boundaries level 0

    • Natural Earth countries boundaries

  • Για Συγκεκριμένες Μορφές

    • world countries GeoJSON download

    • global country boundaries GeoPackage

  • Για Αξιόπιστες Πηγές

    • geoBoundaries global database

    • World Bank official country boundaries

Εν πάση περιπτώσει, εδώ αντλήσαμε δεδομένα από τη σελίδα Natural Earth (για ελληνικούς χάρτες ο χρήστης μπορεί να ψάξει στα Ψηφιακά Χαρτογραφικά Υπόβαθρα) και τα αποθηκεύσαμε σε έναν φάκελο ονόματι xoresXARTIS. Για να τα διαβάσει η R, θα χρειαστεί το πακέτο sf, επομένως γράφουμε:

if(!require(sf)){
    install.packages("sf")
    library(sf)
}
## Loading required package: sf
## Linking to GEOS 3.13.1, GDAL 3.11.0, PROJ 9.6.0; sf_use_s2() is TRUE

Οι χάρτες μας είναι καταγεγραμμένοι στο αρχείο ne_50m_admin_0_countries.shx του φακέλου xoresXARTIS. Αυτούς τους εισάγουμε στην εργασία μας γράφοντας:

sf_xores <- st_read("xoresXARTIS/ne_50m_admin_0_countries.shx")
## Reading layer `ne_50m_admin_0_countries' from data source 
##   `C:\Users\kkoud\Documents\GitHub\r4social\xoresXARTIS\ne_50m_admin_0_countries.shx' 
##   using driver `ESRI Shapefile'
## Simple feature collection with 242 features and 168 fields
## Geometry type: MULTIPOLYGON
## Dimension:     XY
## Bounding box:  xmin: -180 ymin: -89.99893 xmax: 180 ymax: 83.59961
## Geodetic CRS:  WGS 84

Κοιτάζουμε τον πίνακα που δημιουργήθηκε, ώστε να έχουμε κάποια εικόνα για τη δομή του. Εδώ παρουσιάζουμε μόνο ένα αρχικό του τμήμα:

featurecla scalerank LABELRANK SOVEREIGNT SOV_A3 ADM0_DIF LEVEL TYPE TLC ADMIN ADM0_A3 GEOU_DIF GEOUNIT GU_A3 SU_DIF SUBUNIT SU_A3 BRK_DIFF NAME NAME_LONG BRK_A3 BRK_NAME BRK_GROUP ABBREV POSTAL FORMAL_EN FORMAL_FR NAME_CIAWF NOTE_ADM0 NOTE_BRK NAME_SORT NAME_ALT MAPCOLOR7 MAPCOLOR8 MAPCOLOR9 MAPCOLOR13 POP_EST POP_RANK POP_YEAR GDP_MD GDP_YEAR ECONOMY INCOME_GRP FIPS_10 ISO_A2 ISO_A2_EH ISO_A3 ISO_A3_EH ISO_N3 ISO_N3_EH UN_A3 WB_A2 WB_A3 WOE_ID WOE_ID_EH WOE_NOTE ADM0_ISO ADM0_DIFF ADM0_TLC ADM0_A3_US ADM0_A3_FR ADM0_A3_RU ADM0_A3_ES ADM0_A3_CN ADM0_A3_TW ADM0_A3_IN ADM0_A3_NP ADM0_A3_PK ADM0_A3_DE ADM0_A3_GB ADM0_A3_BR ADM0_A3_IL ADM0_A3_PS ADM0_A3_SA ADM0_A3_EG ADM0_A3_MA ADM0_A3_PT ADM0_A3_AR ADM0_A3_JP ADM0_A3_KO ADM0_A3_VN ADM0_A3_TR ADM0_A3_ID ADM0_A3_PL ADM0_A3_GR ADM0_A3_IT ADM0_A3_NL ADM0_A3_SE ADM0_A3_BD ADM0_A3_UA ADM0_A3_UN ADM0_A3_WB CONTINENT REGION_UN SUBREGION REGION_WB NAME_LEN LONG_LEN ABBREV_LEN TINY HOMEPART MIN_ZOOM MIN_LABEL MAX_LABEL LABEL_X LABEL_Y NE_ID WIKIDATAID NAME_AR NAME_BN NAME_DE NAME_EN NAME_ES NAME_FA NAME_FR NAME_EL NAME_HE NAME_HI NAME_HU NAME_ID NAME_IT NAME_JA NAME_KO NAME_NL NAME_PL NAME_PT NAME_RU NAME_SV NAME_TR NAME_UK NAME_UR NAME_VI NAME_ZH NAME_ZHT FCLASS_ISO TLC_DIFF FCLASS_TLC FCLASS_US FCLASS_FR FCLASS_RU FCLASS_ES FCLASS_CN FCLASS_TW FCLASS_IN FCLASS_NP FCLASS_PK FCLASS_DE FCLASS_GB FCLASS_BR FCLASS_IL FCLASS_PS FCLASS_SA FCLASS_EG FCLASS_MA FCLASS_PT FCLASS_AR FCLASS_JP FCLASS_KO FCLASS_VN FCLASS_TR FCLASS_ID FCLASS_PL FCLASS_GR FCLASS_IT FCLASS_NL FCLASS_SE FCLASS_BD FCLASS_UA geometry
Admin-0 country 1 3 Zimbabwe ZWE 0 2 Sovereign country 1 Zimbabwe ZWE 0 Zimbabwe ZWE 0 Zimbabwe ZWE 0 Zimbabwe Zimbabwe ZWE Zimbabwe NA Zimb. ZW Republic of Zimbabwe NA Zimbabwe NA NA Zimbabwe NA 1 5 3 9 14645468 14 2019 21440 2019
  1. Emerging region: G20
  1. Low income
ZI ZW ZW ZWE ZWE 716 716 716 ZW ZWE 23425004 23425004 Exact WOE match as country ZWE NA ZWE ZWE ZWE ZWE ZWE ZWE ZWE ZWE ZWE ZWE ZWE ZWE ZWE ZWE ZWE ZWE ZWE ZWE ZWE ZWE ZWE ZWE ZWE ZWE ZWE ZWE ZWE ZWE ZWE ZWE ZWE ZWE -99 -99 Africa Africa Eastern Africa Sub-Saharan Africa 8 8 5 -99 1 0 2.5 8.0 29.92544 -18.911640 1159321441 Q954 زيمبابوي জিম্বাবুয়ে |Simbabwe |Zimbabwe |Zimbabue |زیمباب ه |Zimbabwe |Ζιμπάμπο ε |זימבבואה |ज़िम्बा ्वे |Zim abwe |Zim abwe |Zimbabwe |ジンバブ |짐바브웨 |Z mbabwe |Z mbabwe |Z mbábue |З мбабве |Z mbabwe |Z mbabve |З мбабве |ز بابوے |Z mbabwe |津 布韦 |辛巴威 |Admin-0 ountry |NA |Admin-0 ountry |NA |NA |NA |NA |NA |NA |NA |NA |NA |NA |NA |NA |NA |NA |NA |NA |NA |NA |NA |NA |NA |NA |NA |NA |NA |NA |NA |NA |NA |NA |NA |MULTIPOL GON (((31.28789 -2… |
Admin-0 country 1 3 Zambia ZMB 0 2 Sovereign country 1 Zambia ZMB 0 Zambia ZMB 0 Zambia ZMB 0 Zambia Zambia ZMB Zambia NA Zambia ZM Republic of Zambia NA Zambia NA NA Zambia NA 5 8 5 13 17861030 14 2019 23309 2019
  1. Least developed region
  1. Lower middle income
ZA ZM ZM ZMB ZMB 894 894 894 ZM ZMB 23425003 23425003 Exact WOE match as country ZMB NA ZMB ZMB ZMB ZMB ZMB ZMB ZMB ZMB ZMB ZMB ZMB ZMB ZMB ZMB ZMB ZMB ZMB ZMB ZMB ZMB ZMB ZMB ZMB ZMB ZMB ZMB ZMB ZMB ZMB ZMB ZMB ZMB -99 -99 Africa Africa Eastern Africa Sub-Saharan Africa 6 6 6 -99 1 0 3.0 8.0 26.39530 -14.660804 1159321439 Q953 زامبيا জাম্বিয়া |Sambia |Zambia |Zambia |زامبیا |Zambie |Ζάμπια |זמביה |ज़ाम्बिय |Zambia |Zambia |Zambia |ザンビア 잠비아 |Za bia |Za bia |Zâ bia |За бия |Za bia |Za biya |За бія |زی بیا |Za bia |赞比 |尚比亞 |Admin-0 ountry |NA |Admin-0 ountry |NA |NA |NA |NA |NA |NA |NA |NA |NA |NA |NA |NA |NA |NA |NA |NA |NA |NA |NA |NA |NA |NA |NA |NA |NA |NA |NA |NA |NA |NA |NA |MULTIPOL GON (((30.39609 -1… |
Admin-0 country 1 3 Yemen YEM 0 2 Sovereign country 1 Yemen YEM 0 Yemen YEM 0 Yemen YEM 0 Yemen Yemen YEM Yemen NA Yem. YE Republic of Yemen NA Yemen NA NA Yemen, Rep.  NA 5 3 3 11 29161922 15 2019 22581 2019
  1. Least developed region
  1. Lower middle income
YM YE YE YEM YEM 887 887 887 RY YEM 23425002 23425002 Exact WOE match as country YEM NA YEM YEM YEM YEM YEM YEM YEM YEM YEM YEM YEM YEM YEM YEM YEM YEM YEM YEM YEM YEM YEM YEM YEM YEM YEM YEM YEM YEM YEM YEM YEM YEM -99 -99 Asia Asia Western Asia Middle East & North Africa 5 5 4 -99 1 0 3.0 8.0 45.87438 15.328226 1159321425 Q805 اليمن ইয়েমেন |Jemen |Yemen |Yemen |یمن |Yémen |Υεμένη |תימן |यमन |Jemen |Yaman |Yemen |イエメン |예멘 |Jeme |Jeme |Iéme |Йеме |Jeme |Yeme |Ємен |یمن |Yeme |也门 |葉門 |Admin-0 ountry |NA |Admin-0 ountry |NA |NA |NA |NA |NA |NA |NA |NA |NA |NA |NA |NA |NA |NA |NA |NA |NA |NA |NA |NA |NA |NA |NA |NA |NA |NA |NA |NA |NA |NA |NA |MULTIPOL GON (((53.08564 16… |
Admin-0 country 3 2 Vietnam VNM 0 2 Sovereign country 1 Vietnam VNM 0 Vietnam VNM 0 Vietnam VNM 0 Vietnam Vietnam VNM Vietnam NA Viet. VN Socialist Republic of Vietnam NA Vietnam NA NA Vietnam NA 5 6 5 4 96462106 16 2019 261921 2019
  1. Emerging region: G20
  1. Lower middle income
VM VN VN VNM VNM 704 704 704 VN VNM 23424984 23424984 Exact WOE match as country VNM NA VNM VNM VNM VNM VNM VNM VNM VNM VNM VNM VNM VNM VNM VNM VNM VNM VNM VNM VNM VNM VNM VNM VNM VNM VNM VNM VNM VNM VNM VNM VNM VNM -99 -99 Asia Asia South-Eastern Asia East Asia & Pacific 7 7 5 2 1 0 2.0 7.0 105.38729 21.715416 1159321417 Q881 فيتنام ভিয়েতনাম |Vietnam |Vietnam |Vietnam |ویتنام |Viêt Nam |Βιετνάμ |וייטנאם |वियतनाम |Vietnám |Vietnam |Vietnam |ベトナム |베트 |Vietn m |Wietn m |Vietn me |Вьетн м |Vietn m |Vietn m |В’єтн м |ویتنا |Việt am |越南 |越南 Admin-0 c untry |NA Admin-0 c untry |NA |NA |NA |NA |NA |NA |NA |NA |NA |NA |NA |NA |NA |NA |NA |NA |NA |NA |NA |NA |NA |NA |NA |NA |NA |NA |NA |NA |NA |NA |NA |MULTIPOLY ON (((104.064 10…. |
Admin-0 country 5 3 Venezuela VEN 0 2 Sovereign country 1 Venezuela VEN 0 Venezuela VEN 0 Venezuela VEN 0 Venezuela Venezuela VEN Venezuela NA Ven. VE Bolivarian Republic of Venezuela República Bolivariana de Venezuela Venezuela NA NA Venezuela, RB NA 1 3 1 4 28515829 15 2019 482359 2014
  1. Emerging region: G20
  1. Upper middle income
VE VE VE VEN VEN 862 862 862 VE VEN 23424982 23424982 Exact WOE match as country VEN NA VEN VEN VEN VEN VEN VEN VEN VEN VEN VEN VEN VEN VEN VEN VEN VEN VEN VEN VEN VEN VEN VEN VEN VEN VEN VEN VEN VEN VEN VEN VEN VEN -99 -99 South America Americas South America Latin America & Caribbean 9 9 4 -99 1 0 2.5 7.5 -64.59938 7.182476 1159321411 Q717 فنزويلا ভেনেজুয়েলা |Venezuela |Venezuela |Venezuela |ونزوئلا |Venezuela |Βενεζουέλ |ונצואלה |वेनेज़ुए ा |Vene uela |Vene uela |Venezuela |ベネズエラ |베네수엘라 |Ven zuela |Wen zuela |Ven zuela |Вен суэла |Ven zuela |Ven zuela |Вен суела |وین زویلا |Ven zuela |委内瑞 |委內瑞拉 |A min-0 cou try |NA |A min-0 cou try |NA | A | A | A | A | A | A | A | A | A | A | A | A | A | A | A | A | A | A | A | A | A | A | A | A | A | A | A | A | A | A | ULTIPOLYGO (((-60.82119 9… |
Admin-0 country 6 6 Vatican VAT 0 2 Sovereign country 1 Vatican VAT 0 Vatican VAT 0 Vatican VAT 0 Vatican Vatican VAT Vatican NA Vat. V State of the Vatican City NA Holy See (Vatican City) NA NA Vatican (Holy See) Holy See 1 3 4 2 825 2 2019 -99 2019
  1. Developed region: nonG7
  1. High income: nonOECD
VT VA VA VAT VAT 336 336 336 -99 -99 23424986 23424986 Exact WOE match as country VAT NA VAT VAT VAT VAT VAT VAT VAT VAT VAT VAT VAT VAT VAT VAT VAT VAT VAT VAT VAT VAT VAT VAT VAT VAT VAT VAT VAT VAT VAT VAT VAT VAT -99 -99 Europe Europe Southern Europe Europe & Central Asia 7 7 4 4 1 0 5.0 10.0 12.45342 41.903323 1159321407 Q237 الفاتيكان ভ্যাটিকান সিটি |Vatikanstadt |Vatican City |Ciudad del Vaticano |واتیکان |Cité du Vatican |Βατικανό |קריית הוותיקן |वैटिकन नग |Vatikán |Vatikan |Città del Vatican |バチカン |바 칸 시국 |Vatica nstad |Watyka |Vatica o |Ватика |Vatika staten |Vatika |Ватика |ویٹیکن سٹی |Thành atican |梵蒂冈 梵蒂岡 |Ad in-0 coun ry |NA |Ad in-0 coun ry |NA |N |N |N |N |N |N |N |N |N |N |N |N |N |N |N |N |N |N |N |N |N |N |N |N |N |N |N |N |N |N |M LTIPOLYGON (((12.43916 41… |

Φυσικά, θα πρέπει να γίνει η σύνδεση των γεωχωρικών δεδομένων του πίνακα sf_xores και τα κοινωνιολογικά δεδομένα του πίνακα cpi_data. Παρατηρούμε όμως πως οι χώρες στον πίνακα sf_xores είναι στη στήλη SOVEREIGNT, ενώ στον πίνακα cpi_data στη στήλη Country. Θα μετονομάσουμε την τελευταία, ώστε να είναι δυνατή η ένωσή τους κατά τα γνωστά:

# Το "2" δικαιολογείται από το ότι η στήλη "Country" είναι η 2η στήλη.
colnames(cpi_data)[2] <- "SOVEREIGNT"

Γράφουμε, λοιπόν:

xartis_cpi  <-  merge(x=sf_xores,y=cpi_data,by="SOVEREIGNT",all.y=TRUE)

Ακολούθως εγκαθιστούμε το πακέτο ggplot2

if(!require(ggplot2)){
    install.packages("ggplot2")
    library(ggplot2)
}
## Loading required package: ggplot2

Κι είμαστε έτοιμοι!!! Απλά χρωματίζουμε τις χώρες βάσεις της ένδειξης της στήλης Score του πίνακα xartis_cpi.

xoroplithis_xartis <- ggplot(data = xartis_cpi) 
xoroplithis_xartis +  geom_sf(aes(fill = Score))

Αν θέλουμε να αλλάξουμε το χρώμα και το πάχος των γραμμών, χρησιμοποιούμε τις παραμέτρους color και linewidth αντίστοιχα:

xoroplithis_xartis +
  geom_sf(aes(fill = Score),  
          color = "red",  
          linewidth = 0.001)

Για να βάλουμε τίτλο και υπότιτλο χρησιμοποιούμε αντίστοιχα τις παραμέτρους title και caption της συνάρτησης labs().

xoroplithis_xartis +
  geom_sf(aes(fill = Score)) +
  labs(
    title = "Βαθμολογία CPI χωρών",
    caption = "Δεδομένα: Transparency International"
  ) 

Ας παίξουμε λίγο ακόμα με τους χρωματισμούς. Θα χρησιμοποιήσουμε το πακέτο viridis, το οποίο παρέχει διάφορους χρωματισμούς.

if(!require(viridis)){
    install.packages("viridis")
    library(viridis)
}
## Loading required package: viridis
## Loading required package: viridisLite

Χρησιμοποιώντας αυτό το πακέτο, μπορούμε να καθορίσουμε και τον τίτλο των χρωματικών ενδείξεων μέσω της παραμέτρου name. Επίσης μπορούμε να χρωματίσουμε και με το χρώμα της επιλογής μας τις χώρες για τις οποίες δεν διαθέτουμε δεδομένα (εδώ κάθε χώρα έχει) χρησιμοποιώντας την παράμετρο na.value.

Ακολουθούν χρωματισμοί με τις διαθέσιμες παλέτες του πακέτου αυτού (magma, inferno, plasma, viridis, cividis, rocket, mako και turbo).

magma

xoroplithis_xartis +
  geom_sf(aes(fill = Score)) + 
  scale_fill_viridis_c(
    option = "magma", 
    name = "βαθμός CPI", 
    na.value = "lightgray"
  )

inferno

xoroplithis_xartis +
  geom_sf(aes(fill = Score)) + 
  scale_fill_viridis_c(
    option = "inferno", 
    name = "βαθμός CPI", 
    na.value = "lightgray"
  )

plasma

xoroplithis_xartis +
  geom_sf(aes(fill = Score)) + 
  scale_fill_viridis_c(
    option = "plasma", 
    name = "βαθμός CPI", 
    na.value = "lightgray"
  )

viridis

xoroplithis_xartis +
  geom_sf(aes(fill = Score)) + 
  scale_fill_viridis_c(
    option = "viridis", 
    name = "βαθμός CPI", 
    na.value = "lightgray"
  )

cividis

xoroplithis_xartis +
  geom_sf(aes(fill = Score)) + 
  scale_fill_viridis_c(
    option = "cividis", 
    name = "βαθμός CPI", 
    na.value = "lightgray"
  )

rocket

xoroplithis_xartis +
  geom_sf(aes(fill = Score)) + 
  scale_fill_viridis_c(
    option = "rocket", 
    name = "βαθμός CPI", 
    na.value = "lightgray"
  )

mako

xoroplithis_xartis +
  geom_sf(aes(fill = Score)) + 
  scale_fill_viridis_c(
    option = "mako", 
    name = "βαθμός CPI", 
    na.value = "lightgray"
  )

turbo

xoroplithis_xartis +
  geom_sf(aes(fill = Score)) + 
  scale_fill_viridis_c(
    option = "turbo", 
    name = "βαθμός CPI", 
    na.value = "lightgray"
  )

Ας προχωρήσουμε κι άλλο λίγο την επεξεργασία δίνοντας κόκκινο χρώμα στις χώρες με χαμηλή βαθμολογία και πράσινο σε αυτές με υψηλή βαθμολογία. Θα χρησιμοποιήσουμε τη συνάρτηση scale_fill_gradient2() του ggplot2. Πρώτα, όμως, θα πρέπει να ορίσουμε το ποιο θα είναι το κεντρικό σημείο. Εδώ θα θεωρήσουμε πως το κεντρικό σημείο θα είναι η διάμεσος των βαθμών CPI.

kentriko_simio <- mean(xartis_cpi$Score, na.rm = TRUE)

Έτσι, έχουμε τον παρακάτω χάρτη, όπου για να χρωματιστεί παίζουμε με τις παραμέτρους low, mid, high και midpoint:

xoroplithis_xartis +
  geom_sf(aes(fill = Score)) +
  
  scale_fill_gradient2(
    low = "red",    # Χαμηλά: Μπλε
    mid = "yellow", # Κέντρο: Κίτρινο
    high = "blue",  # Υψηλά: Κόκκινο
    midpoint = kentriko_simio, # Εδώ καθορίζεται το κεντρικό σημείο
    
    name = "βαθμός CPI",
    na.value = "lightgray"
  )

Τι γίνεται, αν ούτε αυτό μάς αρκεί; Τι γίνεται αν θέλουμε να έχουμε κι άλλες χρωματικές επιλογές; Ας υποθέσουμε ότι θέλουμε να έχουμε:

  • κόκκινο για την κατώτατη τιμή,

  • σκούρο πράσινο για την ανώτατη τιμή και

  • πορτοκαλί, κίτρινο και αχνό πράσινο για το κάθε τεταρτημόριο.

Τοιαύτη περιπτώσει ορίζουμε τις επιλογές χρωμάτων που θα χρησιμοποιήσουμε:

xromata <- c("red", "orange", "yellow", "lightgreen", "darkgreen")

Ακολούθως ορίζουμε τα σημεία τα οποία θα χρωματιστούν με αυτές τις επιλογές:

tetartimoria <- quantile(xartis_cpi$Score, 
                      probs = c(0, 0.25, 0.50, 0.75, 1), 
                      na.rm = TRUE)

Καθόσον, όμως, το scale_fill_gradientn λειτουργεί με τιμές από 0 έως 1, πρέπει να μετατρέψουμε τις τιμές των ποσοστημορίων σε κλίμακα 0-1 (δηλαδή, να τις κανονικοποιήσουμε). Επομένως γράφουμε:

mikroteri_timi <- min(tetartimoria)
megaliteri_timi <- max(tetartimoria)

kanonikopoiimenes_times <- (tetartimoria - mikroteri_timi) / (megaliteri_timi - mikroteri_timi)

Είμαστε έτοιμοι να φτιάξουμε τον χάρτη μας! Στις παραμέτρους colors και values της συνάρτησης scale_fill_gradientn εκχωρούμε αντίστοιχα τις χρωματικές μας επιλογές (xromata) για τις επιλογές των σημείων που θέλαμε (kanonikopoiimenes_times)

xoroplithis_xartis +
  geom_sf(aes(fill = Score)) +
  
  scale_fill_gradientn(
    colors = xromata, # Τα 5 χρώματα που ορίσαμε
    values = kanonikopoiimenes_times, # Οι 5 κανονικοποιημένες θέσεις (0 έως 1)
    
    name = "βαθμός CPI",
    na.value = "lightgray"
  )

Συνολικά ο κώδικας που χρησιμοποιήσαμε είναι ο κάτωθι:

cpi_data <- read.csv(text = "Score,Country,Rank
90,Denmark,1
88,Finland,2
84,Singapore,3
83,New Zealand,4
81,Luxembourg,5
81,Norway,5
81,Switzerland,5
80,Sweden,8
78,Netherlands,9
77,Australia,10
77,Iceland,10
77,Ireland,10
76,Estonia,13
76,Uruguay,13
75,Canada,15
75,Germany,15
74,Hong Kong,17
72,Bhutan,18
72,Seychelles,18
71,Japan,20
71,United Kingdom,20
69,Belgium,22
68,Barbados,23
68,United Arab Emirates,23
67,Austria,25
67,France,25
67,Taiwan,25
65,Bahamas,28
65,United States of America,28
64,Israel,30
64,South Korea,30
63,Chile,32
63,Lithuania,32
63,Saint Vincent and the Grenadines,32
62,Cabo Verde,35
60,Dominica,36
60,Slovenia,36
59,Latvia,38
59,Qatar,38
59,Saint Lucia,38
59,Saudi Arabia,38
58,Costa Rica,42
57,Botswana,43
57,Portugal,43
57,Rwanda,43
56,Cyprus,46
56,Czechia,46
56,Grenada,46
56,Spain,46
55,Fiji,50
55,Oman,50
54,Italy,52
53,Bahrain,53
53,Georgia,53
53,Poland,53
51,Mauritius,56
50,Malaysia,57
50,Vanuatu,57
49,Greece,59
49,Jordan,59
49,Namibia,59
49,Slovakia,59
47,Armenia,63
47,Croatia,63
46,Kuwait,65
46,Malta,65
46,Montenegro,65
46,Romania,65
45,Benin,69
45,Côte d'Ivoire,69
45,Sao Tome and Principe,69
45,Senegal,69
44,Jamaica,73
44,Kosovo,73
44,Timor-Leste,73
43,Bulgaria,76
43,China,76
43,Moldova,76
43,Solomon Islands,76
42,Albania,80
42,Ghana,80
41,Burkina Faso,82
41,Cuba,82
41,Hungary,82
41,South Africa,82
41,Tanzania,82
41,Trinidad and Tobago,82
40,Kazakhstan,88
40,North Macedonia,88
40,Suriname,88
40,Vietnam,88
39,Colombia,92
39,Guyana,92
39,Tunisia,92
39,Zambia,92
38,Gambia,96
38,India,96
38,Maldives,96
37,Argentina,99
37,Ethiopia,99
37,Indonesia,99
37,Lesotho,99
37,Morocco,99
36,Dominican Republic,104
35,Serbia,105
35,Ukraine,105
34,Algeria,107
34,Brazil,107
34,Malawi,107
34,Nepal,107
34,Niger,107
34,Thailand,107
34,Turkey,107
33,Belarus,114
33,Bosnia and Herzegovina,114
33,Laos,114
33,Mongolia,114
33,Panama,114
33,Philippines,114
33,Sierra Leone,114
32,Angola,121
32,Ecuador,121
32,Kenya,121
32,Sri Lanka,121
32,Togo,121
32,Uzbekistan,121
31,Djibouti,127
31,Papua New Guinea,127
31,Peru,127
30,Egypt,130
30,El Salvador,130
30,Mauritania,130
28,Bolivia,133
28,Guinea,133
27,Eswatini,135
27,Gabon,135
27,Liberia,135
27,Mali,135
27,Pakistan,135
26,Cameroon,140
26,Iraq,140
26,Madagascar,140
26,Mexico,140
26,Nigeria,140
26,Uganda,140
25,Guatemala,146
25,Kyrgyzstan,146
25,Mozambique,146
24,Central African Republic,149
24,Paraguay,149
23,Bangladesh,151
23,Congo,151
23,Iran,151
22,Azerbaijan,154
22,Honduras,154
22,Lebanon,154
22,Russia,154
21,Cambodia,158
21,Chad,158
21,Comoros,158
21,Guinea-Bissau,158
21,Zimbabwe,158
20,Democratic Republic of the Congo,163
19,Tajikistan,164
17,Afghanistan,165
17,Burundi,165
17,Turkmenistan,165
16,Haiti,168
16,Myanmar,168
15,North Korea,170
15,Sudan,170
14,Nicaragua,172
13,Equatorial Guinea,173
13,Eritrea,173
13,Libya,173
13,Yemen,173
12,Syria,177
10,Venezuela,178
9,Somalia,179
8,South Sudan,180")

if(!require(sf)){
    install.packages("sf")
    library(sf)
}

sf_xores <- st_read("xoresXARTIS/ne_50m_admin_0_countries.shx")

# Το "2" δικαιολογείται από το ότι η στήλη "Country" είναι η 2η στήλη.
colnames(cpi_data)[2] <- "SOVEREIGNT"

xartis_cpi  <-  merge(x=sf_xores,y=cpi_data,by="SOVEREIGNT",all.y=TRUE)

if(!require(ggplot2)){
    install.packages("ggplot2")
    library(ggplot2)
}

xoroplithis_xartis <- ggplot(data = xartis_cpi) 
xoroplithis_xartis +  geom_sf(aes(fill = Score))

xoroplithis_xartis +
  geom_sf(aes(fill = Score),  
          color = "red",  
          linewidth = 0.001)

xoroplithis_xartis +
  geom_sf(aes(fill = Score)) +
  labs(
    title = "Βαθμολογία CPI χωρών",
    caption = "Δεδομένα: Transparency International"
  ) 

if(!require(viridis)){
    install.packages("viridis")
    library(viridis)
}

xoroplithis_xartis +
  geom_sf(aes(fill = Score)) + 
  scale_fill_viridis_c(
    option = "magma", 
    name = "βαθμός CPI", 
    na.value = "lightgray"
  )

xoroplithis_xartis +
  geom_sf(aes(fill = Score)) + 
  scale_fill_viridis_c(
    option = "inferno", 
    name = "βαθμός CPI", 
    na.value = "lightgray"
  )

xoroplithis_xartis +
  geom_sf(aes(fill = Score)) + 
  scale_fill_viridis_c(
    option = "plasma", 
    name = "βαθμός CPI", 
    na.value = "lightgray"
  )

xoroplithis_xartis +
  geom_sf(aes(fill = Score)) + 
  scale_fill_viridis_c(
    option = "viridis", 
    name = "βαθμός CPI", 
    na.value = "lightgray"
  )

xoroplithis_xartis +
  geom_sf(aes(fill = Score)) + 
  scale_fill_viridis_c(
    option = "cividis", 
    name = "βαθμός CPI", 
    na.value = "lightgray"
  )

xoroplithis_xartis +
  geom_sf(aes(fill = Score)) + 
  scale_fill_viridis_c(
    option = "rocket", 
    name = "βαθμός CPI", 
    na.value = "lightgray"
  )

xoroplithis_xartis +
  geom_sf(aes(fill = Score)) + 
  scale_fill_viridis_c(
    option = "mako", 
    name = "βαθμός CPI", 
    na.value = "lightgray"
  )

xoroplithis_xartis +
  geom_sf(aes(fill = Score)) + 
  scale_fill_viridis_c(
    option = "turbo", 
    name = "βαθμός CPI", 
    na.value = "lightgray"
  )

kentriko_simio <- mean(xartis_cpi$Score, na.rm = TRUE)

xoroplithis_xartis +
  geom_sf(aes(fill = Score)) +
  
  scale_fill_gradient2(
    low = "red",    # Χαμηλά: Μπλε
    mid = "yellow", # Κέντρο: Κίτρινο
    high = "blue",  # Υψηλά: Κόκκινο
    midpoint = kentriko_simio, # Εδώ καθορίζεται το κεντρικό σημείο
    
    name = "βαθμός CPI",
    na.value = "lightgray"
  )

xromata <- c("red", "orange", "yellow", "lightgreen", "darkgreen")


tetartimoria <- quantile(xartis_cpi$Score, 
                      probs = c(0, 0.25, 0.50, 0.75, 1), 
                      na.rm = TRUE)

mikroteri_timi <- min(tetartimoria)
megaliteri_timi <- max(tetartimoria)

kanonikopoiimenes_times <- (tetartimoria - mikroteri_timi) / (megaliteri_timi - mikroteri_timi)

xoroplithis_xartis +
  geom_sf(aes(fill = Score)) +
  
  scale_fill_gradientn(
    colors = xromata, # Τα 5 χρώματα που ορίσαμε
    values = kanonikopoiimenes_times, # Οι 5 κανονικοποιημένες θέσεις (0 έως 1)
    
    name = "βαθμός CPI",
    na.value = "lightgray"
  )