Στο παρόν άρθρο θα εξετάσουμε τις παραβάσεις/παραβιάσεις του ελληνικού εναέριου χώρου. Θα τις εξετάσουμε από το αρχείο enaerParab.xlsx.
| ETOS | MHNAS | PARAB_KEK | PARAB_EEX | OPL_SXHM | EMPLOKES | YPERPT_ETH_ED | SYNOLO_AER |
|---|---|---|---|---|---|---|---|
| 2009 | Ir | 65 | 106 | 37 | 13 | 7 | 250 |
| 2009 | Fe | 47 | 123 | 34 | 17 | 2 | 259 |
| 2009 | Mr | 92 | 152 | 36 | 26 | 3 | 306 |
| 2009 | Ar | 41 | 160 | 32 | 27 | 7 | 229 |
| 2009 | Ma | 121 | 163 | 35 | 8 | 2 | 281 |
| 2009 | In | 57 | 146 | 34 | 25 | 7 | 247 |
| 2009 | Il | 50 | 217 | 42 | 33 | 12 | 310 |
| 2009 | Au | 48 | 225 | 38 | 34 | 4 | 293 |
| 2009 | Se | 43 | 103 | 31 | 27 | 1 | 253 |
| 2009 | Ok | 42 | 69 | 25 | 18 | 0 | 204 |
| 2009 | No | 47 | 108 | 26 | 5 | 2 | 219 |
| 2009 | De | 50 | 106 | 25 | 4 | 4 | 227 |
| 2010 | Ir | 70 | 107 | 26 | 1 | 0 | 239 |
| 2010 | Fe | 35 | 84 | 28 | 0 | 1 | 220 |
| 2010 | Mr | 52 | 114 | 40 | 1 | 1 | 324 |
| 2010 | Ar | 45 | 77 | 27 | 0 | 0 | 239 |
| 2010 | Ma | 129 | 156 | 30 | 1 | 0 | 266 |
| 2010 | In | 56 | 97 | 34 | 1 | 0 | 292 |
| 2010 | Il | 58 | 128 | 46 | 7 | 4 | 316 |
| 2010 | Au | 43 | 87 | 34 | 0 | 0 | 246 |
| 2010 | Se | 46 | 105 | 29 | 2 | 1 | 233 |
| 2010 | Ok | 58 | 92 | 23 | 0 | 1 | 215 |
| 2010 | No | 74 | 98 | 22 | 0 | 4 | 206 |
| 2010 | De | 63 | 94 | 28 | 0 | 8 | 234 |
| 2011 | Ir | 70 | 104 | 34 | 0 | 1 | 274 |
| 2011 | Fe | 46 | 84 | 33 | 0 | 0 | 265 |
| 2011 | Mr | 41 | 71 | 31 | 0 | 0 | 245 |
| 2011 | Ar | 47 | 81 | 31 | 0 | 0 | 254 |
| 2011 | Ma | 128 | 133 | 22 | 0 | 0 | 232 |
| 2011 | In | 41 | 74 | 25 | 0 | 0 | 212 |
| 2011 | Il | 46 | 81 | 32 | 0 | 0 | 198 |
| 2011 | Au | 41 | 86 | 30 | 0 | 0 | 192 |
| 2011 | Se | 43 | 89 | 30 | 5 | 0 | 199 |
| 2011 | Ok | 31 | 54 | 14 | 10 | 2 | 127 |
| 2011 | No | 27 | 42 | 9 | 1 | 1 | 96 |
| 2011 | De | 59 | 63 | 16 | 0 | 0 | 147 |
| 2012 | Ir | 66 | 84 | 16 | 1 | 1 | 146 |
| 2012 | Fe | 32 | 53 | 10 | 0 | 1 | 81 |
| 2012 | Mr | 93 | 69 | 21 | 0 | 0 | 174 |
| 2012 | Ar | 37 | 50 | 16 | 0 | 0 | 110 |
| 2012 | Ma | 104 | 107 | 19 | 0 | 0 | 194 |
| 2012 | In | 60 | 58 | 23 | 0 | 0 | 157 |
| 2012 | Il | 50 | 43 | 15 | 0 | 0 | 96 |
| 2012 | Au | 34 | 37 | 13 | 0 | 0 | 77 |
| 2012 | Se | 36 | 35 | 9 | 0 | 0 | 69 |
| 2012 | Ok | 35 | 31 | 9 | 0 | 0 | 75 |
| 2012 | No | 75 | 49 | 14 | 0 | 1 | 135 |
| 2012 | De | 45 | 30 | 11 | 0 | 0 | 91 |
| 2013 | Ir | 47 | 63 | 13 | 0 | 0 | 103 |
| 2013 | Fe | 47 | 63 | 9 | 0 | 0 | 88 |
| 2013 | Mr | 88 | 48 | 11 | 0 | 0 | 118 |
| 2013 | Ar | 40 | 45 | 8 | 0 | 1 | 74 |
| 2013 | Ma | 94 | 111 | 14 | 0 | 1 | 119 |
| 2013 | In | 34 | 31 | 9 | 0 | 0 | 62 |
| 2013 | Il | 48 | 56 | 14 | 0 | 2 | 105 |
| 2013 | Au | 29 | 34 | 11 | 0 | 1 | 76 |
| 2013 | Se | 48 | 45 | 14 | 0 | 3 | 109 |
| 2013 | Ok | 25 | 26 | 7 | 0 | 0 | 65 |
| 2013 | No | 52 | 69 | 11 | 0 | 2 | 99 |
| 2013 | De | 25 | 45 | 8 | 0 | 1 | 66 |
| 2014 | Ir | 71 | 239 | 18 | 0 | 2 | 138 |
| 2014 | Fe | 31 | 100 | 8 | 0 | 0 | 68 |
| 2014 | Mr | 47 | 109 | 13 | 0 | 2 | 105 |
| 2014 | Ar | 65 | 233 | 12 | 2 | 0 | 109 |
| 2014 | Ma | 136 | 426 | 14 | 0 | 2 | 156 |
| 2014 | In | 52 | 196 | 8 | 0 | 0 | 79 |
| 2014 | Il | 45 | 119 | 13 | 0 | 1 | 96 |
| 2014 | Au | 40 | 173 | 11 | 0 | 0 | 77 |
| 2014 | Se | 104 | 249 | 14 | 0 | 1 | 129 |
| 2014 | Ok | 45 | 125 | 11 | 0 | 3 | 88 |
| 2014 | No | 79 | 118 | 9 | 0 | 0 | 100 |
| 2014 | De | 86 | 157 | 14 | 6 | 3 | 124 |
| 2015 | Ir | 36 | 63 | 10 | 2 | 2 | 79 |
| 2015 | Fe | 35 | 97 | 11 | 0 | 5 | 84 |
| 2015 | Mr | 59 | 210 | 14 | 5 | 3 | 127 |
| 2015 | Ar | 65 | 173 | 10 | 5 | 2 | 136 |
| 2015 | Ma | 187 | 362 | 25 | 29 | 5 | 276 |
| 2015 | In | 66 | 167 | 16 | 14 | 1 | 143 |
| 2015 | Il | 61 | 153 | 10 | 5 | 10 | 111 |
| 2015 | Au | 39 | 83 | 5 | 4 | 0 | 73 |
| 2015 | Se | 70 | 135 | 8 | 5 | 1 | 87 |
| 2015 | Ok | 100 | 190 | 12 | 5 | 3 | 118 |
| 2015 | No | 60 | 75 | 6 | 1 | 0 | 80 |
| 2015 | De | 48 | 71 | 6 | 5 | 4 | 70 |
| 2016 | Ir | 68 | 83 | 5 | 3 | 2 | 89 |
| 2016 | Fe | 76 | 136 | 9 | 7 | 1 | 101 |
| 2016 | Mr | 69 | 109 | 5 | 4 | 0 | 77 |
| 2016 | Ar | 130 | 267 | 12 | 14 | 24 | 133 |
| 2016 | Ma | 157 | 321 | 11 | 6 | 6 | 159 |
| 2016 | In | 46 | 131 | 3 | 1 | 4 | 54 |
| 2016 | Il | 25 | 34 | 2 | 0 | 2 | 31 |
| 2016 | Au | 21 | 39 | 0 | 0 | 0 | 15 |
| 2016 | Se | 53 | 88 | 1 | 0 | 4 | 49 |
| 2016 | Ok | 69 | 176 | 7 | 4 | 4 | 78 |
| 2016 | No | 122 | 126 | 13 | 13 | 2 | 145 |
| 2016 | De | 66 | 161 | 18 | 16 | 8 | 85 |
| 2017 | Ir | 65 | 133 | 16 | 10 | 5 | 70 |
| 2017 | Fe | 81 | 257 | 26 | 8 | 11 | 83 |
| 2017 | Mr | 47 | 172 | 20 | 10 | 3 | 79 |
| 2017 | Ar | 65 | 254 | 18 | 20 | 3 | 97 |
| 2017 | Ma | 190 | 642 | 30 | 29 | 1 | 201 |
| 2017 | In | 71 | 202 | 21 | 25 | 5 | 96 |
| 2017 | Il | 59 | 187 | 20 | 17 | 4 | 84 |
| 2017 | Au | 111 | 346 | 26 | 15 | 2 | 139 |
| 2017 | Se | 134 | 343 | 34 | 16 | 0 | 168 |
| 2017 | Ok | 132 | 401 | 28 | 19 | 2 | 143 |
| 2017 | No | 93 | 212 | 7 | 6 | 3 | 89 |
| 2017 | De | 55 | 168 | 11 | 1 | 0 | 81 |
| 2018 | Ir | 94 | 353 | 11 | 7 | 1 | 89 |
| 2018 | Fe | 82 | 377 | 9 | 3 | 6 | 90 |
| 2018 | Mr | 70 | 190 | 18 | 9 | 0 | 68 |
| 2018 | Ar | 101 | 280 | 20 | 14 | 5 | 124 |
| 2018 | Ma | 202 | 361 | 16 | 10 | 0 | 239 |
| 2018 | In | 98 | 385 | 11 | 8 | 11 | 161 |
| 2018 | Il | 84 | 271 | 10 | 9 | 0 | 126 |
| 2018 | Au | 68 | 276 | 14 | 5 | 2 | 109 |
| 2018 | Se | 113 | 273 | 13 | 7 | 0 | 161 |
| 2018 | Ok | 214 | 381 | 25 | 15 | 4 | 236 |
| 2018 | No | 134 | 233 | 21 | 13 | 0 | 180 |
| 2018 | De | 141 | 325 | 28 | 28 | 18 | 192 |
| 2019 | Ir | 146 | 338 | 33 | 33 | 7 | 199 |
| 2019 | Fe | 81 | 245 | 17 | 16 | 0 | 124 |
| 2019 | Mr | 135 | 378 | 26 | 21 | 6 | 193 |
| 2019 | Ar | 136 | 281 | 23 | 32 | 5 | 184 |
| 2019 | Ma | 290 | 506 | 44 | 41 | 2 | 327 |
| 2019 | In | 127 | 663 | 28 | 30 | 10 | 137 |
| 2019 | Il | 118 | 355 | 29 | 39 | 6 | 161 |
| 2019 | Au | 95 | 341 | 27 | 39 | 11 | 106 |
| 2019 | Se | 132 | 413 | 21 | 15 | 3 | 171 |
| 2019 | Ok | 139 | 507 | 32 | 32 | 21 | 180 |
| 2019 | No | 199 | 342 | 25 | 28 | 9 | 208 |
| 2019 | De | 185 | 444 | 39 | 57 | 44 | 234 |
| 2020 | Ir | 189 | 597 | 55 | 69 | 62 | 261 |
| 2020 | Fe | 131 | 541 | 41 | 67 | 54 | 172 |
| 2020 | Mr | 181 | 425 | 36 | 30 | 58 | 190 |
| 2020 | Ar | 132 | 507 | 38 | 46 | 81 | 160 |
| 2020 | Ma | 93 | 420 | 27 | 36 | 47 | 120 |
| 2020 | In | 120 | 459 | 20 | 25 | 36 | 149 |
| 2020 | Il | 125 | 558 | 23 | 28 | 20 | 142 |
| 2020 | Au | 281 | 457 | 38 | 51 | 6 | 283 |
Οι στήλες αρχικά ήταν ΠΑΡΑΒΑΣΕΙΣ ΚΕΚ (ICAO), ΠΑΡΑΒΙΑΣΕΙΣ ΕΕΧ,
ΟΠΛΙΣΜΕΝΟΙ ΣΧΗΜΑΤΙΣΜΟΙ, ΕΜΠΛΟΚΕΣ, ΥΠΕΡΠΤΗΣΗ ΕΘΝΙΚΟΥ
ΕΔΑΦΟΥΣ, ΣΥΝΟΛΟ ΑΕΡΟΣΚΑΦΩΝ κι έχουν μετονομαστεί σε ETOS,
MHNAS, PARAB_KEK, PARAB_EEX,
OPL_SXHM, EMPLOKES και
YPERPT_ETH_ED.
Αυτό που θα κάνουμε εδώ είναι να συγκρίνουμε τις παραβάσεις ΚΕΚ (ICAO), τις παραβιάσεις ΕΕΧ, τους οπλισμένους σχηματισμούς, τις εμπλοκές και τις υπερπτήσεις εθνικού εδάφους από μήνα σε μήνα του 2009, ώστε να δούμε αν υπάρχουν διαφοροποιήσεις μέσα στο έτος. Επίσης θα μελετήσουμε ξεχωριστά τους καλοκαιρινούς μήνες.
Αρχικά γράφουμε:
Ώστε να συλλέξουμε τα δεδομένα που θέλουμε.
Ακολούθως εγκαθιστούμε το πακέτο fmsb, μιας και θα μας
χρειαστεί για το γράφημα με το οποίο θα συγκρίνουμε τις
παραβάσεις/παραβιάσεις των μηνών αυτών.
Ακολούθως δημιουργούμε τις συναρτήσεις astrogramma1()
και astrogramma(), οι οποίες θα κάνουν τη δουλειά που
θέλουμε. Εμείς θα χρησιμοποιούμε μόνο την astrogramma. Η
astrogramma1 είναι βοηθητική.
astrogramma1 <- function(dedomena, xroma = rainbow(length(dedomena[,1])),
vlabels = colnames(dedomena)[-1], vlcex = 0.7, title = NULL, ...){
m <- min(dedomena[,-1])
M <- max(dedomena[,-1])
n <- length(dedomena[1,])
m_row <- rep(m, n-1)
M_row <- rep(M, n-1)
max_min <- rbind(M_row, m_row)
rownames(max_min) <- c("Max", "Min")
rownames(dedomena) <- dedomena[,1]
data <- dedomena[,-1]
colnames(max_min) <- colnames(data)
data <- rbind(max_min,data)
radarchart(
data, axistype = 1,
# Customize the polygon
pcol = xroma, pfcol = scales::alpha(xroma, 0.5), plwd = 2, plty = 1,
# Customize the grid
cglcol = "grey", cglty = 1, cglwd = 0.8,
# Customize the axis
axislabcol = "grey",
# Variable labels
vlcex = vlcex, vlabels = vlabels,
caxislabels = (0:5)*(M/5), title = title, ...
)
for (k in 1:length(data[,1])){
rn <- dedomena[k,1]
mtext(rn, side = 1, line = k-1, col = xroma[k], adj = 0.5)
}
}
astrogramma <- function(dedomena, mazi = T, xroma = rainbow(length(dedomena[,1])),
vlabels = colnames(dedomena)[-1], vlcex = 0.7, title = NULL, ...) {
if (mazi) {
astrogramma1(dedomena, xroma,
vlabels, vlcex, title, ...)
} else {
op <- par(mar = c(1, 1, 1, 1))
par(mfrow = c(3,2))
nn <- length(dedomena[,1])
for (i in 1:nn){
df0 <- dedomena[i,]
astrogramma1(df0, xroma = rainbow(nn)[i])
}
par(op)
}
}Ακολούθως γράφουμε:
Και μας εξάγεται το μήνυμα σφάλματος
Error in .rowNamesDF<-(x, value = value) : invalid 'row.names' length.
Αυτό οφείλεται στο ότι δεν είναι ο πίνακας δεδομένων μας σε κατάλληλη
για τη συνάρτηση μορφή. Δεν θα εμβαθύνουμε στους λόγους αυτού του
προβλήματος, απλά θα πούμε ότι αυτό λύνεται εύκολα μέσω της συνάρτησης
as.data.frame(). Σε αυτήν θα εκχωρήσουμε ως όρισμα τον
πίνακα που μας ενδιαφέρει. Δηλαδή γράφουμε:
Οπότε γράφουμε:

Έχουμε τα αστρογράμματά μας. Βέβαια, το ένα έχει σχεδιαστεί πάνω από
το άλλο κι αυτό ίσως ενοχλήσει κάποιους. Αυτό μπορούμε να το
διορθώσουμε, γράφοντας απλώς FALSE σαν δεύτερο όρισμα στη
συνάρτηση astrogramma().

Έτσι έχουμε τα ξεχωριστά αστρογράμματα για τους μήνες που θέλαμε.
Στο σημείο αυτό είναι ώρα να πούμε πώς λειτουργούνε τα αστρογράμματα:
Στις άκρες ενός πολυγώνου βρίσκονται τα ονόματα των μεταβλητών
που μας ενδιαφέρουν. Εδώ είναι οι παραβάσεις ΚΕΚ
(PARAB_KEK), οι παραβιάσεις ΕΕΧ (PARAB_EEX),
οι οπλισμένοι σχηματισμοί (OPL_SXHM), οι εμπλοκές
(EMPLOKES) και οι υπερπτήσεις εθνικού εδάφους
(YPERPT_ETH_ED).
Η τιμή της μεταβλητής υποδηλώνεται από ένα σημείο σε μια απόσταση από το κέντρο του πολυγώνου. Όσο μεγαλύτερη είναι η τιμή της μεταβλητής, τόσο πιο μακριά από το κέντρο του πολυγώνου θα βρίσκεται το σημείο. Εκεί θα πάνε οι κορυφές του αστρογράμματος.
Ενώνουμε όλα τα σημεία αυτά κι έχουμε το αστρόγραμμα.
Έτσι, βλέπουμε ότι οι παραβάσεις ΚΕΚ είναι σαφώς λιγότερες από τις παραβιάσεις ΕΕΧ. Μπορούμε επίσης να δούμε ότι η κατανομή αυτών των παραβάσεων/παραβιάσεων δεν αλλάζει ουσιοδώς στους τρεις αυτούς καλοκαιρινούς μήνες.
Πριν προχωρήσουμε στη μελέτη μας, θα πρέπει να επισημάνουμε εδώ ότι ο πίνακας δεδομένων μας θα πρέπει να είναι σε συγκεκριμένη μορφή. Θα πρέπει οι μεταβλητές που θα αποτελούν τις κορυφές του αστρογράμματος να είναι τα ονόματα των στηλών μας (εδώ είναι τα είδη παραβάσεων/παραβιάσεων). Επίσης οι στήλες μας θα πρέπει να είναι αποκλειστικά αυτές, και μόνο η πρώτη στήλη να είναι οι τιμές του πλαισίου στο οποίο εξετάζουμε τις μεταβλητές μας (εδώ η πρώτη στήλη ήταν οι μήνες).
Πάμε, λοιπόν να δούμε τα αστρογράμματα και για όλους τους μήνες του έτους. Γράφουμε:
Οπότε και πάλι προκύπτει το μνήμα σφάλματος
Error in .rowNamesDF<-(x, value = value) : invalid 'row.names' length.
Αυτό, όπως και πριν, το διορθώνουμε γράφοντας:
και με την κάτωθι εντολή έχουμε τα αστρογράμματα:

Εδώ τα πράγματα είναι ακόμα πιο ενοχλητικά από πριν. Όχι μόνο το ένα αστρόγραμμα επικαλύπτει το άλλο, αλλά και οι ετικέτες των μηνών έχουν βγει εκτός της εικόνας. Οπότε γράφουμε εναλλακτικά:


Ο κώδικας που χρησιμοποιήσαμε είναι ο παρακάτω:
e_a <- enaerParab[enaerParab$ETOS == 2009, -c(1,8)]
e_aKALOK <- e_a[6:8,]
if(!require(fmsb)){
install.packages("fmsb")
library(fmsb)
}
astrogramma1 <- function(dedomena, xroma = rainbow(length(dedomena[,1])),
vlabels = colnames(dedomena)[-1], vlcex = 0.7, title = NULL, ...){
m <- min(dedomena[,-1])
M <- max(dedomena[,-1])
n <- length(dedomena[1,])
m_row <- rep(m, n-1)
M_row <- rep(M, n-1)
max_min <- rbind(M_row, m_row)
rownames(max_min) <- c("Max", "Min")
rownames(dedomena) <- dedomena[,1]
data <- dedomena[,-1]
colnames(max_min) <- colnames(data)
data <- rbind(max_min,data)
radarchart(
data, axistype = 1,
# Customize the polygon
pcol = xroma, pfcol = scales::alpha(xroma, 0.5), plwd = 2, plty = 1,
# Customize the grid
cglcol = "grey", cglty = 1, cglwd = 0.8,
# Customize the axis
axislabcol = "grey",
# Variable labels
vlcex = vlcex, vlabels = vlabels,
caxislabels = (0:5)*(M/5), title = title, ...
)
for (k in 1:length(data[,1])){
rn <- dedomena[k,1]
mtext(rn, side = 1, line = k-1, col = xroma[k], adj = 0.5)
}
}
astrogramma <- function(dedomena, mazi = T, xroma = rainbow(length(dedomena[,1])),
vlabels = colnames(dedomena)[-1], vlcex = 0.7, title = NULL, ...) {
if (mazi) {
astrogramma1(dedomena, xroma,
vlabels, vlcex, title, ...)
} else {
op <- par(mar = c(1, 1, 1, 1))
par(mfrow = c(3,2))
nn <- length(dedomena[,1])
for (i in 1:nn){
df0 <- dedomena[i,]
astrogramma1(df0, xroma = rainbow(nn)[i])
}
par(op)
}
}
astrogramma(e_aKALOK)
e_aKALOK_PD <- as.data.frame(e_aKALOK)
astrogramma(e_aKALOK_PD)
astrogramma(e_aKALOK_PD, FALSE)
astrogramma(e_a)
e_a_PD <- as.data.frame(e_a)
astrogramma(e_a_PD)
astrogramma(e_a_PD, FALSE)