Περιγραφική Ανάλυση Ελληνικού Κοινοβουλίου

Μία βασική ανάλυση των διατελέσαντων βουλευτών της περιόδου (1974 - 2023Α)

R
Περιγραφικη αναλυση
Συγγραφέας

stesiam

Δημοσιευμένο

10 Οκτωβρίου 2022

Εισαγωγή

Και ξεκινάμε…

Αυτό είναι το πρώτο άρθρο ανάλυσης στην ιστοσελίδα μου! Προσωπικά, δεν επιθυμούσα να ξεκινήσω με μία έτοιμη βάση δεδομένων και να εφαρμόσω ένα απλό μοντέλο μηχανικής μάθησης. Αποφάσισα να παιδευτώ ελαφρώς προκειμένου να εφαρμόσω όλο τον κύκλο της ανάλυσης δεδομένων, ξεκινώντας από την εξόρυξή τους, προχωρώντας στην τακτοποίηση και καταλήγοντας στην ανάλυσή τους. Σε αυτό το κείμενο θα ήθελα να ασχοληθώ με την ιστορία των εκπροσώπων του Ελληνικού Κοινοβουλίου και να απαντήσω κάποια ενδιαφέροντα ερωτήματα. Για τη διεξαγωγή της έρευνας θα εξάγω τα δεδομένα που έχει δημοσιεύσει η ιστοσελίδα του Ελληνικού Κοινοβουλίου σχετικά με τους εκλεγμένους βουλευτές.

Το ελληνικό πολιτικό σκηνικό έχει κατακτήσει τη συζήτηση της κοινής γνώμης τα τελευταία χρόνια, δυστυχώς για αρνητικούς λόγους, εξαιτίας της πρόσφατης οικονομικής κρίσης. Ένα σημαντικό μέρος του διαλόγου αφορά τα αίτια της κρίσης, τα οποία αποτελούν σημείο αντιπαράθεσης μέχρι και σήμερα. Σε αυτό το άρθρο θα ασχοληθώ με μόνο ένα σημείο της κριτικής, ότι «έχουμε τους ίδιους» εκπροσώπους. Βέβαια, οι εκπρόσωποί μας στη Βουλή δεν ορίστηκαν από κανένα κόμμα, αλλά αντιθέτως έγιναν εκλογές, οπότε η κριτική επικεντρώνεται στο ότι εκλέγονται τα ίδια κόμματα ή ακόμα και οι ίδιοι βουλευτές, ίσως λόγω προσωπικών οφελών. Μοναδική εξαίρεση αποτελούν εκλογές στις οποίες δεν αναδείχθηκε κυβέρνηση και γίνονται επαναληπτικές εκλογές στις οποίες η επιλογή των εκπροσώπων γίνεται με λίστα που συντάσσουν τα κόμματα. Τελικά, τι συνέβη σε αυτήν την περίπτωση; Είναι ένας ισχυρισμός που έχει νόημα; Αυτό θα μελετήσω στο παρόν άρθρο. Παράλληλα θα εξετάσω την εμμονή σε πρόσωπα μεταξύ οπαδών του ίδιου κόμματος, ενώ παρουσιάζει ενδιαφέρον και η διερεύνηση του χαρακτηριστικού αυτού σε επίπεδο νομού.

Προαπαιτούμενα

Εισαγωγή πακέτων

Αρχικά θα εισάγουμε τις απαραίτητες βιβλιοθήκες, αναλόγως των εντολών που χρειάζομαι και της ανάλυσης που θα κάνω. Ενδεικτικά, θα χρειαστώ το μετα-πακέτο tidyverse για να εισάγω, τροποποιήσω και οπτικοποιήσω τα δεδομένα. Στη συνέχεια, για την κατασκευή πινάκων θα χρησιμοποιήσω το πακέτο gt. Τέλος, για να έχω διαγράμματα που να φαίνονται αξιοπρεπώς σε όλους τους τύπους των οθονών, θα αξιποιήσω τη βιβλιοθήκη highcharter.

Δείξε τον κώδικα
# Φόρτωση βιβλιοθηκών
library(tidyverse)
library(gt)
library(highcharter)

# Graphs
# library(ggplot2)
# library(ggpol) 
# library(ggtext)

# Άλλες ρυθμίσεις
options(digits=2) # print only 2 decimals

Εισαγωγή δεδομένων

Για να βρω ποιοι είναι βουλευτές που έχουν εκλεγεί περισσότερες φορές σε εθνικό επίπεδο, σε επίπεδο κόμματος, αλλά και εκλογικής περιφέρειας, πρέπει να βρω τα αντίστοιχα δεδομένα. Ευτυχώς, η ιστοσελίδα του Ελληνικού Κοινοβουλίου διατηρεί σχετικό ηλεκτρονικό αρχείο με τους εκλεγμένους βουλευτές από το 1974 μέχρι και το 2019. Τα δεδομένα εξορύχθηκαν με τη βοήθεια του πακέτου RSelenium, ωστόσο δεν θα αναλύσω τον τρόπο συλλογής τους. Σε περίπτωση που κάποιος ενδιαφέρεται για αυτό μπορεί να δει το σχετικό κώδικα στο GitHub. Χρησιμοποιώ το ήδη εξορυγμένο σύνολο δεδομένων και το εισάγω με την εντολή read_csv().

Δείξε τον κώδικα
parliamentGR = read_csv("https://github.com/stesiam/scrape-greek-parl-members-26/releases/download/v1.1.0/parlMembers-el.csv")
parliamentEN = read_csv("https://github.com/stesiam/scrape-greek-parl-members-26/releases/download/v1.1.0/parlMembers-eng.csv")

Ορισμός συναρτήσεων

Προκειμένου να αποφύγω την επανάληψη του κώδικά μου θα ορίσω και μερικές συναρτήσεις. Αρχικά, θέλω να έχω πίνακες που βασίζονται στη βιβλιοθήκη gt με ορισμένες αλλαγές στην εμφάνιση για να φαίνονται ωραία. Για αυτό σε πολλούς πίνακες θα δείτε χρήση της gt_custom(), αντί της προεπιλεγμένης gt().

Δείξε τον κώδικα
gt_custom <- function(data, head_max = 5, use_labels = TRUE) {
    
    data_subset <- as.data.frame(data) %>% head(head_max)
    
    gt_tbl <- data_subset %>%
        gt() %>%
        cols_align(align = "center", columns = everything()) %>%
        tab_style(
            style = cell_text(
                v_align = "middle",
                weight = "bold",
                whitespace = "normal"
            ),
            locations = cells_column_labels()
        ) %>%
        tab_options(
            row.striping.include_table_body = FALSE,
            table.background.color = "transparent",
            column_labels.background.color = "transparent",
            table.width = pct(100), 
            table.font.size = px(13),           
            data_row.padding = px(15), 
            column_labels.padding = px(15),
            table.border.top.style = "none",
            table.border.bottom.style = "none",
            table_body.hlines.style = "none", 
            column_labels.border.top.width = px(2),
            column_labels.border.top.color = "#757575",
            column_labels.border.bottom.width = px(2),
            column_labels.border.bottom.color = "#757575",
            table_body.border.bottom.width = px(2),
            table_body.border.bottom.color = "#757575"
        ) %>%
        opt_css(css = "
      .gt_table th, .gt_table td { 
        text-align: center !important; 
        vertical-align: middle !important;
      }
      .gt_table { 
        margin-left: auto !important; 
        margin-right: auto !important; 
        width: 100% !important;
      }
      .gt_table tr { background-color: transparent !important; }
      .gt_row { background-color: transparent !important; }
    ")
    
    # Apply labels only if requested
    if (use_labels) {
        gt_tbl <- gt_tbl %>%
            cols_label_with(
                fn = function(x) {
                    html(paste0(
                        "<b>", greek_labels[x], "</b>",
                        "<br><span style='font-size:10px; color:#777; font-style:italic;'>",
                        x,
                        "</span>"
                    ))
                }
            )
    }
    
    return(gt_tbl)
}

Θα ήταν εξαιρετικά ενδιαφέρον, δεδομένου ότι υπάρχουν πληροφορίες για τους βουλευτές και για τις κοινοβουλευτικές ομάδες στις οποίες ανήκουν, να κατασκευάσω διαγράμματα σύνθεσης της Βουλής. Μιας και κάνω ιστορική αναδρομή είναι πολύ πιθανό να χρειαστώ παραπάνω από τρία σε αυτό το άρθρο, γεγονός που δικαιολογεί τη δημιουργία μίας συνάρτησης. Η συνάρτηση θα καλείται plot_parliament_term() και θα δέχεται ως όρισμα έναν αριθμό που θα δηλώνει ποιας περιόδου θα θέλαμε να διαγραμματίσουμε. Τα δεδομένα μου καλύπτουν από τη Α’ (1η) περίοδο (1974 - 1977) μέχρι και την ΙΘ’ (19η) περίοδο (2023A), συνεπώς το όρισμα της συνάρτησης δέχεται τιμές από το 1 μέχρι το 19.

Δείξε τον κώδικα
##new function plot
plot_parliament <- function(data, period_number, lang = "el") {
    
    df_period <- data %>%
        filter(period_num == period_number)
    
    seats_party <- df_period %>%
        group_by(abbrNamesEl, fullNamesEl, Color) %>%
        summarise(n = n(), .groups = "drop") %>%
        arrange(desc(n))
    
    total_seats <- sum(seats_party$n)
    
    title_text    <- if (lang == "el") paste0("Σύνθεση Βουλής – Περίοδος ", period_number) else paste0("Parliament Composition – Period ", period_number)
    subtitle_text <- if (lang == "el") paste0("Σύνολο εδρών: ", total_seats) else paste0("Total seats: ", total_seats)
    caption_text  <- if (lang == "el") "Πηγή: Βουλή των Ελλήνων" else "Source: Hellenic Parliament"
    hover_text    <- if (lang == "el") "Έδρες" else "Seats"
    
    highchart() %>%
        hc_chart(type = "item") %>%
        hc_title(text = title_text) %>%
        hc_subtitle(text = subtitle_text) %>%
        hc_caption(
            text = caption_text,
            align = "center",
            verticalAlign = "bottom",
            y = 10
        ) %>%
        hc_legend(labelFormat = "{name} <span style='opacity: 0.4'>{y}</span>") %>%
        hc_add_series(
            name = hover_text,
            data = purrr::pmap(
                list(seats_party$fullNamesEl, seats_party$n, seats_party$Color, seats_party$abbrNamesEl),
                list
            ),
            keys = c("name", "y", "color", "label"),
            dataLabels = list(
                enabled = TRUE,
                format = "{point.label}",
                style = list(textOutline = "5px contrast")
            ),
            center = list("50%", "88%"),
            size = "170%",
            startAngle = -100,
            endAngle = 100
        ) %>%
        hc_responsive(
            rules = list(
                list(
                    condition = list(maxWidth = 768),
                    chartOptions = list(
                        series = list(
                            dataLabels = list(
                                distance = -30,
                                style = list(
                                    fontSize = "12px",
                                    textOutline = "1px contrast"
                                )
                            ),
                            center = list("50%", "75%"),
                            size = "130%"
                        )
                    )
                ),
                list(
                    condition = list(maxWidth = 600),
                    chartOptions = list(
                        series = list(
                            dataLabels = list(
                                enabled = FALSE
                            ),
                            center = list("50%", "75%"),
                            size = "130%"
                        )
                    )
                ),
                list(
                    condition = list(maxWidth = 400),
                    chartOptions = list(
                        series = list(
                            dataLabels = list(
                                enabled = FALSE
                            ),
                            center = list("50%", "80%"),
                            size = "110%"
                        )
                    )
                )
            )
        )
}

gt_parliament <- function(data, period_number, lang = "el") {
    
    df_period <- data %>%
        filter(period_num == period_number)
    
    seats_party <- df_period %>%
        group_by(abbrNamesEl, fullNamesEl, Color) %>%
        summarise(n = n(), .groups = "drop") %>%
        arrange(desc(n)) |>
        select(abbrNamesEl, n) |>
        rename(
          "Κόμμα" = "abbrNamesEl",
          "Έδρες" = "n"
        )
    
    return(seats_party)
}

Δομή δεδομένων

Τα συλλεγμένα δεδομένα αποτελούνται από 6 μεταβλητές (στήλες), οι οποίες είναι όλες ποιοτικές. Από αυτές τις πέντε, οι τέσσερις είναι κατηγορικές και μία διατάξιμη μεταβλητή.

Πίνακας 1: Σύνοψη και περιγραφή μεταβλητών
Μεταβλητή Τύπος μεταβλητής Περιγραφή
Full Name Ποιοτική
(κατηγορική)
Επώνυμο / Όνομα / Όνομα πατέρα
Party Ποιοτική
(κατηγορική)
Κοινοβουλευτική ομάδα - Κόμμα που εκπροσωπεί
Constituency Ποιοτική
(κατηγορική)
Εκλογική περιφέρεια
Term Ποιοτική
(διατάξιμη)
Περίοδος θητείας
gender Ποιοτική
(κατηγορική)
Εκτίμηση κοινωνικού φύλου με βάση το όνομα

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

Πίνακας 2: Προεπισκόπηση συνόλου δεδομένων (πρώτες 10 σειρές)
Ονοματεπώνυμο
name
Κόμμα
party
Περιφέρεια
region
Εκλογική περίοδος
period_name
Διάρκεια περιόδου
dates
Εκτιμώμενο φύλο
gender
Αγαπηδάκη Ειρήνη Στυλιανού ΝΕΑ ΔΗΜΟΚΡΑΤΙΑ ΕΠΙΚΡΑΤΕΙΑΣ ΙΘ΄ (28/05/2023 - 29/05/2023) γυναίκα
Σκυλακάκης Θεόδωρος Στεφάνου ΝΕΑ ΔΗΜΟΚΡΑΤΙΑ ΕΠΙΚΡΑΤΕΙΑΣ ΙΘ΄ (28/05/2023 - 29/05/2023) άνδρας
Στυλιανίδης Χρήστος Μέλη ΝΕΑ ΔΗΜΟΚΡΑΤΙΑ ΕΠΙΚΡΑΤΕΙΑΣ ΙΘ΄ (28/05/2023 - 29/05/2023) άνδρας
Λυτρίβη Ιωάννα Δημητρίου ΝΕΑ ΔΗΜΟΚΡΑΤΙΑ ΕΠΙΚΡΑΤΕΙΑΣ ΙΘ΄ (28/05/2023 - 29/05/2023) γυναίκα
Σταμάτης Γεώργιος Αναστασίου ΝΕΑ ΔΗΜΟΚΡΑΤΙΑ ΕΠΙΚΡΑΤΕΙΑΣ ΙΘ΄ (28/05/2023 - 29/05/2023) άνδρας
Χατζηιωαννίδου Μαρία Νεφέλη Βασιλείου ΝΕΑ ΔΗΜΟΚΡΑΤΙΑ ΕΠΙΚΡΑΤΕΙΑΣ ΙΘ΄ (28/05/2023 - 29/05/2023) γυναίκα
Πολύζου Μαρία Αθανασίου ΝΕΑ ΔΗΜΟΚΡΑΤΙΑ ΕΠΙΚΡΑΤΕΙΑΣ ΙΘ΄ (28/05/2023 - 29/05/2023) γυναίκα
Ηλιόπουλος Όθων Σταύρου ΣΥΝΑΣΠΙΣΜΟΣ ΡΙΖΟΣΠΑΣΤΙΚΗΣ ΑΡΙΣΤΕΡΑΣ - ΠΡΟΟΔΕΥΤΙΚΗ ΣΥΜΜΑΧΙΑ ΕΠΙΚΡΑΤΕΙΑΣ ΙΘ΄ (28/05/2023 - 29/05/2023) άνδρας
Ακρίτα Έλενα Λουκή ΣΥΝΑΣΠΙΣΜΟΣ ΡΙΖΟΣΠΑΣΤΙΚΗΣ ΑΡΙΣΤΕΡΑΣ - ΠΡΟΟΔΕΥΤΙΚΗ ΣΥΜΜΑΧΙΑ ΕΠΙΚΡΑΤΕΙΑΣ ΙΘ΄ (28/05/2023 - 29/05/2023) γυναίκα
Αποστολάκης Ευάγγελος Ευαγγέλου ΣΥΝΑΣΠΙΣΜΟΣ ΡΙΖΟΣΠΑΣΤΙΚΗΣ ΑΡΙΣΤΕΡΑΣ - ΠΡΟΟΔΕΥΤΙΚΗ ΣΥΜΜΑΧΙΑ ΕΠΙΚΡΑΤΕΙΑΣ ΙΘ΄ (28/05/2023 - 29/05/2023) άνδρας

Τακτοποίηση δεδομένων

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

Η πρόσοψη του Ελληνικού Κοινοβουλίου που βρίσκεται στη πλατεία Συντάγματος. Η κατασκευή του κτιρίου ξεκίνησε το 1836 και ολοκληρώθηκε το 1843. Ο αρχικός σκοπός του κτιρίου να ήταν να λειτουργήσει ως ανάκτορο για τον βασιλιά Όθωνα για αυτό το λόγο το κτίριο είναι γνωστό και με το όνομα Παλαιά Ανάκτορα. Από το 1935 μέχρι και σήμερα χρησιμοποιείται ως έδρα του κοινοβουλίου.
Πηγή φωτογραφίας: Pixabay, 2022 από το χρήστη Leonhard_Niederwimmer - Άδεια χρήσης: Pixabay Licence

Δείξε τον κώδικα
data.frame(
   "Κόμμα"= unique(parliamentGR$party),
   "Σύνολο χαρακτήρων" = str_length(unique(parliamentGR$party)),check.names = FALSE
) %>%
  arrange(-`Σύνολο χαρακτήρων`) %>%
  gt_custom(., 7, use_labels = FALSE)
Πίνακας 3: Προεπισκόπηση ονομάτων κομμάτων Ελληνικού Κοινοβουλίου
Κόμμα Σύνολο χαρακτήρων
ΔΗΜΟΚΡΑΤΙΚΗ ΣΥΜΠΑΡΑΤΑΞΗ (ΠΑΝΕΛΛΗΝΙΟ ΣΟΣΙΑΛΙΣΤΙΚΟ ΚΙΝΗΜΑ - ΔΗΜΟΚΡΑΤΙΚΗ ΑΡΙΣΤΕΡΑ) 79
ΣΥΝΑΣΠΙΣΜΟΣ ΡΙΖΟΣΠΑΣΤΙΚΗΣ ΑΡΙΣΤΕΡΑΣ - ΠΡΟΟΔΕΥΤΙΚΗ ΣΥΜΜΑΧΙΑ 59
ΑΝΕΞΑΡΤΗΤΟΙ ΕΛΛΗΝΕΣ ΕΘΝΙΚΗ ΠΑΤΡΙΩΤΙΚΗ ΔΗΜΟΚΡΑΤΙΚΗ ΣΥΜΜΑΧΙΑ 58
ΑΝΕΞΑΡΤΗΤΟΙ ΕΛΛΗΝΕΣ - ΠΑΝΟΣ ΚΑΜΜΕΝΟΣ 36
ΕΛΛΗΝΙΚΗ ΛΥΣΗ - ΚΥΡΙΑΚΟΣ ΒΕΛΟΠΟΥΛΟΣ 35
ΣΥΝΑΣΠΙΣΜΟΣ ΡΙΖΟΣΠΑΣΤΙΚΗΣ ΑΡΙΣΤΕΡΑΣ 35
ΕΝΙΑΙΑ ΔΗΜΟΚΡΑΤΙΚΗ ΑΡΙΣΤΕΡΑ- Ε.Δ.Α. 35

Πέρα από τα παραπάνω, παρατηρώ ότι υπάρχουν πολλαπλές καταχωρήσεις για το ίδιο κόμμα, το οποίο ενδεχομένως κατά την πάροδο των ετών έκανε μία μικρή αλλαγή ονόματος ή ταυτότητας (Ανεξάρτητοι Έλληνες) ή ακόμα και πιο μεγάλες αλλαγές που κατά βάση αναφέρονται και είναι πρόγονοι ή απόγονοι του ίδιου κόμματος (Συνασπισμός -> ΣΥΡΙΖΑ ή ΠΑΣΟΚ -> Ελιά -> Δημοκρατική Συμπαράταξη -> Κίνημα Αλλαγής -> ΠΑΣΟΚ). Δεδομένου ότι αυτές οι αλλαγές δεν μπορούν να κατανοηθούν εύκολα, κρίνεται απαραίτητη η δημιουργία ενός νέου πίνακα, ώστε να ομαδοποιήσω αυτήν την πληροφορία και να τη συγχωνεύσω στο βασικό μου σύνολο δεδομένων.

Δείξε τον κώδικα
parties = data.frame(
  sourceNamesEL = unique(parliamentGR$party),
  fullNamesEn = c("New Democracy","Coalition of the Radical Left", "Panhellenic Socialistic Movement",
                       "Communist Party of Greece", "Independent", "Greek Solution", 
                       "Coalition of the Radical Left", "Panhellenic Socialistic Movement", 
                       "European Realistic Disobedience Front", "Golden Dawn", 
                       "Panhellenic Socialistic Movement", "The River", "Popular Unity",
                       "Independent Greeks", "Panhellenic Socialistic Movement",
                       "Independent Greeks", "Democratic Left", "Independent Democratic MPs",
                       "Popular Orthodox Rally", "Coalition of the Radical Left",
                       "Democratic Social Movement", "Political Spring", "Alternative Ecologists",
                       "Democratic Renewal", "Communist Party οf Greece (interior)",
                       "Union of the Democratic Centre","National Alignment", 
                       "Progress and Left Forces Alliance", "Party of New Liberals", "United Democratic Left"),
  fullNamesEl = c("Νέα Δημοκρατία", "Συνασπισμός Ριζοσπαστικής Αριστεράς", "Πανελλήνιο Σοσιαλιστικό Κίνημα",
                       "Κομμουνιστικό Κόμμα Ελλάδας", "Ανεξάρτητοι", "Ελληνική Λύση",
                       "Συνασπισμός Ριζοσπαστικής Αριστεράς", "Πανελλήνιο Σοσιαλιστικό Κίνημα",
                       "Μέτωπο Ευρωπαϊκής Ρεαλιστικής Ανυπακοής", "Χρυσή Αυγή",
                       "Πανελλήνιο Σοσιαλιστικό Κίνημα", "Το Ποτάμι", "Λαϊκή Ενότητα",
                       "Ανεξάρτητοι Έλληνες", "Πανελλήνιο Σοσιαλιστικό Κίνημα",
                        "Ανεξάρτητοι Έλληνες", "Δημοκρατική Αριστερά", "Ανεξάρτητοι Δημοκρατικοί Βουλευτές",
                       "Λαϊκός Ορθόδοξος Συναγερμός", "Συνασπισμός Ριζοσπαστικής Αριστεράς",
                       "Δημοκρατικό Κοινωνικό Κίνημα", "Πολιτική Άνοιξη", "Εναλλακτικοί Οικολόγοι",
                       "Δημοκρατική Ανανέωση", "Κομμουνιστικό Κόμμα Ελλάδας Εσωτερικού", 
                       "Ένωση Δημοκρατικού Κέντρου", "Εθνική Παράταξη", 
                       "Συμμαχία Προοδευτικών και Αριστερών Δυνάμεων", "Κόμμα Νεοφιλελευθέρων", 
                       "Ενιαία Δημοκρατική Αριστερά"),
  abbrNamesEn = c("ND", "SYRIZA", "PASOK", "KKE", "Independent", "Lysi", "SYRIZA", "PASOK",
                       "MeRA25", "GD", "PASOK", "River", "LaE", "ANEL", "PASOK", "ANEL", "DIMAR",
                       "ADP", "LAOS", "SYRIZA", "DIKKI", "POLAN", "AE", "DIANA", "KKE int.",
                       "EDIK", "EP", "SPAD", "KNF", "EDA"),
    abbrNamesEl = c("ΝΔ", "ΣΥΡΙΖΑ", "ΠΑΣΟΚ", "ΚΚΕ", "Ανεξάρτητοι", "Λύση", "ΣΥΡΙΖΑ", "ΠΑΣΟΚ",
                       "ΜέΡΑ25", "ΧΑ", "ΠΑΣΟΚ", "ΠΟΤΑΜΙ", "ΛΑΕ", "ΑΝΕΛ", "ΠΑΣΟΚ", "ΑΝΕΛ", "ΔΗΜΑΡ",
                       "ΑΔΠ", "ΛΑΟΣ", "ΣΥΡΙΖΑ", "ΔΗΚΚΙ", "ΠΟΛΑΝ", "ΑΕ", "ΔΗΑΝΑ", "ΚΚΕ εσ.",
                       "ΕΔΗΚ", "ΕΠ", "ΣΠΑΔ", "ΚΝΦ", "ΕΔΑ")) |>
  mutate(Color = case_when(
    abbrNamesEn == "PASOK" ~ "#95bb72",
    abbrNamesEn == "ND" ~ "#0492c2",
    abbrNamesEn == "KKE" ~ "#FF6666",
    abbrNamesEn == "SYRIZA" ~ "#e27bb1",
    abbrNamesEn == "KKE int." ~ "#FF3366",
    abbrNamesEn == "INDEPENDENT" ~ "#ffffff",
    abbrNamesEn == "DIANA" ~ "orange",
    abbrNamesEn == "DHMAR" ~ "#FF4466",
    abbrNamesEn == "RIVER" ~ "#5592aa",
    TRUE ~ "#808080"
  ))

parties %>% gt_custom()
Πίνακας 4: Οργάνωση ονομάτων κομμάτων και συντμήσεών τους
Όνομα κόμματος (αρχικό)
sourceNamesEL
Όνομα κόμματος (αγγλ. πλήρες)
fullNamesEn
Όνομα κόμματος (ελλ. πλήρες)
fullNamesEl
Συντομογραφία (ελλ.)
abbrNamesEn
Συντομογραφία (αγγλ.)
abbrNamesEl
Χρώμα
Color
ΝΕΑ ΔΗΜΟΚΡΑΤΙΑ New Democracy Νέα Δημοκρατία ND ΝΔ #0492c2
ΣΥΝΑΣΠΙΣΜΟΣ ΡΙΖΟΣΠΑΣΤΙΚΗΣ ΑΡΙΣΤΕΡΑΣ - ΠΡΟΟΔΕΥΤΙΚΗ ΣΥΜΜΑΧΙΑ Coalition of the Radical Left Συνασπισμός Ριζοσπαστικής Αριστεράς SYRIZA ΣΥΡΙΖΑ #e27bb1
ΠΑΣΟΚ-ΚΙΝΗΜΑ ΑΛΛΑΓΗΣ Panhellenic Socialistic Movement Πανελλήνιο Σοσιαλιστικό Κίνημα PASOK ΠΑΣΟΚ #95bb72
ΚΟΜΜΟΥΝΙΣΤΙΚΟ ΚΟΜΜΑ ΕΛΛΑΔΑΣ Communist Party of Greece Κομμουνιστικό Κόμμα Ελλάδας KKE ΚΚΕ #FF6666
ΑΝΕΞΑΡΤΗΤΟΙ Independent Ανεξάρτητοι Independent Ανεξάρτητοι #808080

Πλέον είμαι σε θέση να χρησιμοποιήσω την ελληνική ή την αγγλική έκδοση των ονομάτων των κομμάτων, ενώ σε περίπτωση δημιουργίας ενός γραφήματος έχω αντιστοιχίσει την πιο κοινά αποδεκτή συντομογραφία τους. Τέλος, ο διαχωρισμός του πλήρους ονόματος και μιας συντομογραφίας είναι ιδιαίτερα σημαντικός για τη δημιουργία γραφημάτων, καθώς ο διαθέσιμος χώρος είναι συχνά περιορισμένος. Με αυτόν τον τρόπο δίνουμε στον αναγνώστη τη πληροφορία που χρειάζεται δίχως να κουράζουμε, βελτιώνοντας την αναγνωσιμότητα και τη κατανόηση του κειμένου και του γραφήματος. Όπως είδαμε και παραπάνω υπάρχουν ονόματα - σιδηρόδρομοι, όπως των Ανεξαρτήτων Ελλήνων, όπου αριθμεί 81 χαρακτήρες και της Δημοκρατικής Συμπαράταξης (στην ουσία ΠΑΣΟΚ, σε συνεργασία με μικρά κόμματα όπως η ΔΗΜΑΡ, ΚΙΔΗΣΟ κ.α.) με 70. Σε αντιπαραβολή αυτών των ονομάτων και για λόγους πληρότητας το ΠΟΛ.Α. ήταν το όνομα με τους λιγότερους χαρακτήρες (6) και αναφέρεται στο κόμμα Πολιτική Άνοιξη. Πριν κλείσω τη ενότητα, θα ήθελα να σχολιάσω στην τελευταία στήλη του πίνακα. Με τόσα κόμματα είναι εμφανές ότι θα χρειαστεί να θέσω χρώματα κατάλληλα για το καθένα, αλλά το πλήθος τους ίσως προκαλέσει σύγχυση. Έκρινα λοιπόν απαραίτητο να επιλέξω το πιο αντιπροσωπευτικό χρώμα από το έμβλημα κάθε κόμματος, τουλάχιστον για τα πιο γνωστά.

Κάπου εδώ κλείνει η ενότητα των κομμάτων και ανοίγει μία τελευταία πρόκληση. Αυτή των ονομάτων των βουλευτών. Στην προεπισκόπηση των δεδομένων τα ονόματα δίνονται με σχετικά συνεπή δομή. Συνήθως αποτελούνται από Επώνυμο Όνομα Πατρώνυμο. Βέβαια πολλές φορές υπάρχουν βουλευτές που έχουν δύο ονόματα ή δύο επίθετα. Σε αυτές τις περιπτώσεις διαχωρίζονται τα διπλά επώνυμα ή ονόματα με μία παύλα.

Θα αναρωτηθεί κάποιος και το πρόβλημα που είναι; Αφού είναι απλά μία μεταβλητή με τα ονόματά τους.

Ναι! Αλλά μπορώ να κάνω καλύτερη δουλειά επειδή σε αυτή τη μεταβλητή εσωκλείεται περισσότερη πληροφορία. Με λίγη προσπάθεια από μέρους μου μπορώ να χωρίσω το όνομα σε άλλες τρεις μεταβλητές, όπου θα δηλώνουν το επίθετο του βουλευτή, το όνομά του και το πατρώνυμό του ξεχωριστά. Αυτό θα φανεί χρήσιμο σε τυχόν διαγράμματα όπου θα αναφέρομαι αποκλειστικά στο επίθετο και στο αρχικό του ονόματός του, αντί στο πλήρες όνομά του συμπεριλαμβανομένου και του πατρώνυμου.

Δείξε τον κώδικα
pattern <- "^([^-\\s]+)(?:\\s*-\\s*([^-\\s]+))?\\s+([^-\\s]+)(?:\\s*-\\s*([^-\\s]+))?(?:\\s+([^-\\s]+(?:\\s*(?:-|\\s)\\s*[^-\\s]+)*))?$"

mps_clean_names = parliamentGR %>%
  mutate(
    name = name %>%
      str_remove_all("\\s*\\([^)]*\\)") %>%
      str_squish()
  ) %>%
  extract(
    name,
    into = c("surname1", "surname2", "name1", "name2", "father_name"),
    regex = pattern,
    remove = FALSE
  )|>
  mutate(
    surname1 = if_else(
      str_detect(name, "Ληναίος - Μητυλιναίος"),
      "Ληναίος",
      surname1
    ),
    name1 = if_else(
      str_detect(name, "Ληναίος - Μητυλιναίος"),
      "Διονύσιος",
      name1
    )
  ) |>
  mutate(
    surname1 = if_else(
      str_detect(name, "Κουίκ Τέρενς"),
      "Κουίκ",
      surname1
    ),
    name1 = if_else(
      str_detect(name, "Κουίκ Τέρενς"),
      "Τέρενς",
      name1
    )
  ) |>
  mutate(
    surname1 = if_else(
      str_detect(name, "Μπαλτάς Αριστείδης"),
      "Μπαλτάς",
      surname1
    ),
    name1 = if_else(
      str_detect(name, "Μπαλτάς Αριστείδης"),
      "Αριστείδης",
      name1
    )
  ) |>
  rename(sourceNamesEL = party)

mps_clean_names$period_num <- mps_clean_names$period_name |>
  fct_recode(
    "1" = "Α'",
    "2" = "Β'",
    "3" = "Γ'",
    "4" = "Δ'",
    "5" = "Ε'",
    "7" = "Ζ'",
    "8" = "Η'",
    "9" = "Θ΄",
    "10" = "Ι'",
    "11" = "ΙΑ'",
    "12" = "ΙΒ'",
    "13" = "ΙΓ΄",
    "14" = "ΙΔ΄",
    "15" = "ΙΕ΄",
    "17" = "ΙΖ΄",
    "18" = "ΙΗ΄",
    "19" = "ΙΘ΄",
    "16" = "ΙΣΤ΄",
    "6" = "ΣΤ'"
  ) |>
  as.character() |>
  as.numeric()

clean_dataset = mps_clean_names %>%
    left_join(parties, by = "sourceNamesEL") %>%
    relocate(fullNamesEl, .after = sourceNamesEL) %>%
    relocate(abbrNamesEl, .after = fullNamesEl) %>%
    relocate(fullNamesEn, .after = abbrNamesEl) %>%
    relocate(abbrNamesEn, .after = fullNamesEn) %>%
    relocate(period_num, .after = period_name)


clean_dataset %>% 
  gt_custom()
Πίνακας 5: Επεξεργασμένο - τακτοποιημένο σύνολο δεδομένων
Ονοματεπώνυμο βουλευτή
name
Πρώτο Επίθετο
surname1
Δεύτερο Επίθετο
surname2
Πρώτο Όνομα
name1
Δεύτερο Όνομα
name2
Όνομα Πατρός
father_name
Όνομα Κόμματος (αρχικό)
sourceNamesEL
Πλήρες Όνομα Κόμματος (ελλ.)
fullNamesEl
Συντομογραφία Κόμματος (ελλ.)
abbrNamesEl
Πλήρες Όνομα Κόμματος (αγγλ.)
fullNamesEn
Συντομογραφία Κόμματος (αγγλ.)
abbrNamesEn
Περιφέρεια
region
Περίοδος
period_name
Αριθμός Περιόδου
period_num
Διάρκεια Περιόδου
dates
Εκτιμώμενο φύλο
gender
Χρώμα Κόμματος
Color
Αγαπηδάκη Ειρήνη Στυλιανού Αγαπηδάκη Ειρήνη Στυλιανού ΝΕΑ ΔΗΜΟΚΡΑΤΙΑ Νέα Δημοκρατία ΝΔ New Democracy ND ΕΠΙΚΡΑΤΕΙΑΣ ΙΘ΄ 19 (28/05/2023 - 29/05/2023) γυναίκα #0492c2
Σκυλακάκης Θεόδωρος Στεφάνου Σκυλακάκης Θεόδωρος Στεφάνου ΝΕΑ ΔΗΜΟΚΡΑΤΙΑ Νέα Δημοκρατία ΝΔ New Democracy ND ΕΠΙΚΡΑΤΕΙΑΣ ΙΘ΄ 19 (28/05/2023 - 29/05/2023) άνδρας #0492c2
Στυλιανίδης Χρήστος Μέλη Στυλιανίδης Χρήστος Μέλη ΝΕΑ ΔΗΜΟΚΡΑΤΙΑ Νέα Δημοκρατία ΝΔ New Democracy ND ΕΠΙΚΡΑΤΕΙΑΣ ΙΘ΄ 19 (28/05/2023 - 29/05/2023) άνδρας #0492c2
Λυτρίβη Ιωάννα Δημητρίου Λυτρίβη Ιωάννα Δημητρίου ΝΕΑ ΔΗΜΟΚΡΑΤΙΑ Νέα Δημοκρατία ΝΔ New Democracy ND ΕΠΙΚΡΑΤΕΙΑΣ ΙΘ΄ 19 (28/05/2023 - 29/05/2023) γυναίκα #0492c2
Σταμάτης Γεώργιος Αναστασίου Σταμάτης Γεώργιος Αναστασίου ΝΕΑ ΔΗΜΟΚΡΑΤΙΑ Νέα Δημοκρατία ΝΔ New Democracy ND ΕΠΙΚΡΑΤΕΙΑΣ ΙΘ΄ 19 (28/05/2023 - 29/05/2023) άνδρας #0492c2

Αριθμός κομμάτων

Έχοντας τακτοποιήσει τις πληροφορίες, θα ξεκινήσω την ανάλυσή μου με μία ιστορική αναδρομή στον αριθμό των κομμάτων που έχουν εκπροσωπηθεί στο Ελληνικό Κοινοβούλιο και έχουν ολοκληρώσει τη θητεία τους ως κοινοβουλευτική ομάδα. Από τη πτώση της χούντας, τα κόμματα που συμμετείχαν στο κοινοβούλιο ήταν αρκετά λίγα, και είναι τα πλέον ιστορικά, το ΚΚΕ, η Νέα Δημοκρατία και το ΠΑΣΟΚ. Έτσι η Βουλή του 1981, αποτελούνταβ μόλις από τρία κόμματα.

Δείξε τον κώδικα
plot_parliament(clean_dataset, 3)
Σχήμα 1: Σύνθεση Ελληνικού Κοινοβουλίου Γ´ περιόδου (1981 - 1985)
Δείξε τον κώδικα
gt_parliament(clean_dataset, 3) |>
    gt_custom(head_max = Inf, use_labels = FALSE)
Πίνακας 6: Σύνθεση Ελληνικού Κοινοβουλίου Γ´ περιόδου (1981 - 1985)
Κόμμα Έδρες
ΠΑΣΟΚ 172
ΝΔ 115
ΚΚΕ 13

Η ωρίμανση των συνθηκών της Μεταπολίτευσης έδωσε τη δυνατότητα να εκφραστούν και άλλες απόψεις, οι οποίες μετουσιώθηκαν σε νέα κόμματα. Μετά τη θητεία του ’81-’85, στη Βουλή αρχίζουν να εμφανίζονται νέες δυνάμεις με μικρά ποσοστά. Πιο σημαντική σε αριθμό εδρών ήταν αυτή του Συνασπισμού (ΣΥ.ΡΙΖ.Α), ο οποίος είχε μακρά παρουσία στη Βουλή, ωστόσο με μικρή και επισφαλή εκπροσώπηση.

Δείξε τον κώδικα
plot_parliament(clean_dataset, 5)
Σχήμα 2: Σύνθεση Ελληνικού Κοινοβουλίου Ε’ περιόδου (Ιούνιος, 1989 - Οκτ. 1989)
Δείξε τον κώδικα
gt_parliament(clean_dataset, 5) |>
    gt_custom(head_max = Inf, use_labels = FALSE)
Πίνακας 7: Σύνθεση Ελληνικού Κοινοβουλίου Ε’ περιόδου (Ιούνιος, 1989 - Οκτ. 1989)
Κόμμα Έδρες
ΝΔ 145
ΠΑΣΟΚ 125
ΣΥΡΙΖΑ 28
Ανεξάρτητοι 1
ΔΗΑΝΑ 1

Γενικότερα, μπορώ να χωρίσω τη μεταπολιτευτική περίοδο σε τρία στάδια ως προς τον αριθμό των κοινοβουλευτικών ομάδων. Το πρώτο στάδιο (1974-1981) όπου ήταν μία μεταβατική περίοδος κατά την απαλλάχθηκε από μία δικτατορία και το κομματικό σκηνικό ήταν ακόμα σε διαμόρφωση. Το δεύτερο στάδιο (1981-2009) χαρακτηρίζεται από σχετική σταθερότητα, από 3 μέχρι 5 κοινοβουλευτικές ομάδες σε κάθε θητεία. Η τελευταία περίοδος (2009 - σήμερα) ξεκινάει και με τα πρώτα σημάδια της οικονομικής κρίσης χρέους στη χώρα μας. Κοινοβουλευτικά, η δυσαρέσκεια απέναντι στο πολιτικό σύστημα και στις πολιτικές που οδήγησαν τη χώρα σε μία δυσμενή οικονομική θέση εκφράστηκε με την εκτόξευση του αριθμού των κοινοβουλευτικών ομάδων. Αυτό έχει τουλάχιστον δύο αναγνώσεις, είτε οι υπάρχουσες φωνές δεν κάλυπταν μεγάλο φάσμα των απόψεων της κοινωνίας είτε υπήρχε τεράστια απογοήτευση για τις πολιτικές αποφάσεις των μακροημερευόντων κομμάτων.

Δείξε τον κώδικα
plot_parliament(clean_dataset, 13)
Σχήμα 3: Σύνθεση Ελληνικού Κοινοβουλίου ΙΓ’ περιόδου (2009 - 2012)
Δείξε τον κώδικα
gt_parliament(clean_dataset, 13) |>
    gt_custom(head_max = Inf, use_labels = FALSE)
Πίνακας 8: Σύνθεση Ελληνικού Κοινοβουλίου ΙΓ’ περιόδου (2009 - 2012)
Κόμμα Έδρες
ΠΑΣΟΚ 129
ΝΔ 72
Ανεξάρτητοι 31
ΚΚΕ 21
ΛΑΟΣ 16
ΣΥΡΙΖΑ 11
ΑΝΕΛ 10
ΔΗΜΑΡ 10

Η όλη αποσταθεροποίηση τεκμαίρεται και από τη σύνθεση της Βουλής της 15ης περιόδου, όπου ο αριθμός των κοινοβουλευτικών ομάδων έφτασε στο υψηλότερο επίπεδο της Μεταπολίτευσης.

Δείξε τον κώδικα
plot_parliament(clean_dataset, 15)
Σχήμα 4: Σύνθεση Ελληνικού Κοινοβουλίου ΙΕ’ περιόδου (2012 - 2014)
Δείξε τον κώδικα
gt_parliament(clean_dataset, 15) |>
    gt_custom(head_max = Inf, use_labels = FALSE)
Πίνακας 9: Σύνθεση Ελληνικού Κοινοβουλίου ΙΕ’ περιόδου (2012 - 2014)
Κόμμα Έδρες
ΝΔ 127
ΣΥΡΙΖΑ 71
ΠΑΣΟΚ 28
ΑΔΠ 17
ΧΑ 16
ΑΝΕΛ 12
ΚΚΕ 12
ΔΗΜΑΡ 11
Ανεξάρτητοι 7
Προειδοποίηση

Στο παρακάτω διάγραμμα υπάρχουν αρκετοί ανεξάρτητοι βουλευτές οι οποίοι ανήκουν στις κατηγορίες των ανεξάρτητων βουλευτών, σύμφωνα με την ιστοσελίδα του Ελληνικού Κοινοβουλίου. Γενικότερα εκείνη η περίοδος χαρακτηρίζεται από έντονη κυβερνητική αστάθεια, αλλά πολλοί από αυτούς προέκυψαν από τα κόμματα των Ανεξαρτήτων Ελλήνων και της Ένωσης Κεντρωών. Ένα μεγάλο κύμα αποχωρήσεων - ανεξαρτητοποιήσεων από τα προαναφερόμενα κόμματα οδήγησε στο να μην πληρούν τα κριτήρια ώστε να αποτελούν κοινοβουλευτικές ομάδες. Αυτός είναι ο λόγος που ακόμα και βουλευτές που δεν αποχώρησαν από αυτά τα κόμματα λόγω της διάλυσης της κοινοβουλευτικής ομάδας χαρακτηρίζονται ως ανεξάρτητοι.

και τελικά τη πλήρη ανατροπή του πολιτικού σκηνικού, με ένα κόμμα που πάλευε να μπει στη Βουλή, να είναι αυτό που τελικά κατέλαβε τις περισσότερες θέσεις.

Δείξε τον κώδικα
plot_parliament(clean_dataset, 17)
Σχήμα 5: Σύνθεση Ελληνικού Κοινοβουλίου ΙΖ’ περιόδου (2015-2019)
Δείξε τον κώδικα
gt_parliament(clean_dataset, 17) |>
    gt_custom(head_max = Inf, use_labels = FALSE)
Πίνακας 10: Σύνθεση Ελληνικού Κοινοβουλίου ΙΖ’ περιόδου (2015 - 2019)
Κόμμα Έδρες
ΣΥΡΙΖΑ 144
ΝΔ 77
Ανεξάρτητοι 24
ΠΑΣΟΚ 19
ΧΑ 16
ΚΚΕ 15
ΠΟΤΑΜΙ 5

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

Δείξε τον κώδικα
# Summarize the number of distinct parties per period
r <- clean_dataset %>%
    distinct(period_num, period_name, dates, abbrNamesEl) %>%
    count(period_num, period_name, dates, name = "n") %>%
    arrange(period_num)

# Each point will carry: period_name (x), n (y), dates (for tooltip)
series_data <- lapply(1:nrow(r), function(i) {
    list(
        name = r$period_name[i],  # used on x-axis
        y = r$n[i],               # value
        dates = r$dates[i]        # for tooltip
    )
})

hc <- highchart() %>%
  hc_chart(type = "spline") %>%
  
  hc_title(
    text = "Αριθμός Κοινοβουλευτικών Ομάδων ανά Κοινοβουλευτική Περίοδο",
    style = list(fontWeight = "bold")
  ) %>%
  
  hc_subtitle(
    text = "Ελληνικό Κοινοβούλιο – Μεταπολιτευτική περίοδος"
    ) %>%
  
  hc_add_series(
    name = "Κοινοβουλευτικές Ομάδες",
    data = series_data,   # same series_data list as before
    color = "#1F3A93",  
    lineWidth = 2.5,
    marker = list(radius = 4, symbol = "circle")
  ) %>%
  
  hc_xAxis(
    type = "category",
    title = list(
      text = "Κοινοβουλευτική Περίοδος"
    ),
    labels = list(rotation = 0)
  ) %>%
  
  hc_yAxis(
    title = list(
      text = "Αριθμός Ομάδων"
    ),
    allowDecimals = FALSE,
    gridLineColor = "#E6E6E6",
    gridLineWidth = 1
  ) %>%
  
  hc_tooltip(
    useHTML = TRUE,
    backgroundColor = "white",
    borderColor = "#CCCCCC",
    formatter = JS(
      "function() {
         return '<b>Περίοδος:</b> ' + this.point.name + '<br/>' +
                '<b>Διάρκεια:</b> ' + this.point.dates + '<br/>' +
                '<b>Ομάδες:</b> ' + this.point.y;
       }"
    )
  ) %>%
  
  # Remove data labels by disabling them
  hc_plotOptions(
    series = list(
      dataLabels = list(enabled = FALSE),
      states = list(hover = list(lineWidthPlus = 0))
    )
  ) %>%
  
  hc_legend(enabled = FALSE) %>%
  hc_credits(enabled = FALSE)

hc
Σχήμα 6: Αριθμός κοινοβουλευτικών ομάδων και ανεξάρτητων ανά κοινοβουλευτική θητεία
Δείξε τον κώδικα
clean_dataset %>%
    distinct(period_num, period_name, dates, abbrNamesEl) %>%
    count(period_num, period_name, dates, name = "n") %>%
    arrange(period_num) %>%
    select(period_num, period_name, n) %>%
    rename(
      "Περίοδος" = period_num,
      "Θητεία" = period_name,
      "Αριθμός" = n
    ) %>%
  gt_custom(head_max = Inf, use_labels = FALSE)
Πίνακας 11: Αριθμός κοινοβουλευτικών ομάδων και ανεξάρτητων ανά κοινοβουλευτική θητεία
Περίοδος Θητεία Αριθμός
1 Α' 7
2 Β' 7
3 Γ' 3
4 Δ' 5
5 Ε' 5
6 ΣΤ' 5
7 Ζ' 6
8 Η' 4
9 Θ΄ 6
10 Ι' 5
11 ΙΑ' 5
12 ΙΒ' 5
13 ΙΓ΄ 8
14 ΙΔ΄ 7
15 ΙΕ΄ 9
16 ΙΣΤ΄ 8
17 ΙΖ΄ 7
18 ΙΗ΄ 7
19 ΙΘ΄ 6
Σημείωση

Λάβετε υπόψη σας ότι μέχρι αυτή τη στιγμή δεν έχω καταφέρει να θέσω - αλλάξω τη θέση των κομμάτων στα διαγράμματα του κοινοβουλίου. Αυτό θα ήταν χρήσιμο για να δηλώνεται εκτός από τον αριθμό των βουλευτών και η ευρύτερη πολιτική θέση ενός κόμματος. Συνεπώς, τα παρακάτω διαγράμματα της Βουλής, πρέπει να διαβαστούν μόνο ως προς το αριθμό βουλευτών και όχι ταυτόχρονη πολιτική θέση.

Εκλεξιμότητα

Τα αποτελέσματα των εκλογών ήταν λίγο-πολύ γνωστά, απλώς έχει πάντα ενδιαφέρον να δοκιμάζεις τις γνώσεις σου και με την R. Τώρα όμως θα ασχοληθώ με πιο ουσιαστικά ερωτήματα. Μία βασική κριτική στο πολιτικό σύστημα είναι ότι βγαίνουν συνεχώς οι ίδιοι. Βέβαια αυτή η κριτική δεν μπορεί να έχει ως αποδέκτες μόνο τους πολιτικούς, αλλά και σε μερίδα πολιτών που επιλέγει να στηρίξει τους ίδιους. Δεν μπορείς να περιμένεις να δεις μία αλλαγή στο πολιτικό σύστημα αν εναλλάσεις την εξουσία μεταξύ δύο τριών κομμάτων, πόσω δε μάλλον όταν επιμένεις και στους ίδιους εκπροσώπους. Τελικά τι συνέβη στην Ελλάδα; Οι βουλευτές μας αλλάζουν ανά τακτά χρονικά διαστήματα ή εκλέγονται συνεχώς οι ίδιοι; Σε αυτή την ενότητα θα βρω ποιοι είναι οι βουλευτές που έχουν εκλεχτεί περισσότερες φορές.

Ο υπολογισμός μου απαιτεί τη γνώση της συχνότητας εκλογής, ενώ θα πρέπει να ληφθεί υπόψιν το πλήρες όνομα με πατρώνυμο καθώς υπάρχουν αρκετά ίδια επώνυμα. Η διαχείριση των ονομάτων και της συχνότητάς τους απαιτεί την συγκεκριμένη ακρίβεια μιας και το Ελληνικό Κοινοβούλιο διακρίνεται και για την εμμονή του σε πρόσωπα των ίδιων οικογενειών και αν δεν κάνω διαχωρισμό με βάσει το πλήρες όνομα να καταλήξω να «υπολογίζω» περισσότερες θητείες σε μεμονωμένα άτομα.

Δείξε τον κώδικα
u = clean_dataset |>
  select(name, surname1, name1, fullNamesEl, abbrNamesEl, Color) |>
  count(name, surname1, name1, fullNamesEl, abbrNamesEl, Color) |>
  dplyr::filter(n >=9) |>
  arrange(-n) |>
  mutate(name1 = str_sub(name1,start = 1, end=1),
         surnameAndInitial = paste0(surname1, " ", name1, ".")) %>%
  arrange(desc(n))


highchart() %>%
    hc_chart(type = "bar") %>%
    hc_title(text = "Βουλευτές που εκλέχτηκαν πιο πολλές φορές") %>%
    hc_subtitle(text = "Πόσες φορές εκπροσώπησαν το συγκεκριμένο κόμμα στο Ελληνικό Κοινοβούλιο") %>%
    hc_xAxis(categories = u$surnameAndInitial) %>%
    hc_yAxis(title = list(text = "Value")) %>%
    hc_series(
        list(
            name = "# Αριθμός εκλέχτηκε",
            data = lapply(1:nrow(u), function(i) {
                list(
                    y = u$n[i],
                    affiliate = u$abbrNamesEl[i],
                    color = u$Color[i]
                )
            }),
            dataLabels = list(
                enabled = TRUE,
                format = "{y}",
                style = list(fontSize = "12px", textOutline = "none", color = "#FFFFFF")
            )
        )
    ) %>%
    hc_plotOptions(
        bar = list(
            borderRadius = 3,
            pointPadding = 0.2,
            groupPadding = 0.1
        )
    ) %>%
    hc_tooltip(
        headerFormat = "",
        pointFormat = "<b>{point.category}</b><br/>
                  Κόμμα: <b>{point.affiliate}</b><br/>
                  Εκλέχτηκε: <b>{point.y}</b> φορές"
    ) %>%
    hc_legend(enabled = FALSE) %>%
    hc_caption(
        text = "Colors represent different affiliations",
        style = list(fontSize = "12px", color = "#666666")
    )
Σχήμα 7: Βουλευτές που έχουν εκλεγεί περισσότερες φορές εκπροσωπώντας συγκεκριμένο κόμμα

Έτσι λοιπόν, φιλτράροντας τους βουλευτές με 11 εκπροσωπήσεις ή παραπάνω προκύπτει ότι σε αυτή την ομάδα ανήκουν 8 βουλευτές. Όλοι τους ανήκουν στα δύο μεγάλα κόμματα της Ελλάδας, τη Νέα Δημοκρατία και το ΠΑΣΟΚ, με τον κ. Κακλαμάνη και κ. Παπανδρέου να είναι οι βουλευτές που έχουν εκπροσωπήσει τις περισσότερες φορές το ΠΑΣΟΚ. Για να βρούμε βουλευτές άλλων κομμάτων θα πρέπει να χαλαρώσουμε αρκετά τον δείκτη φορών εκλογής, στις 9 ή 10 εκπροσωπήσεις, αφού η κ. Παραρήγα έχει εκλεγεί 10 φορές με το ΚΚΕ και ο κ. Δραγασάκης 9 φορές με τον ΣΥΡΙΖΑ.

Εκλεξιμότητα κόμματος

Μέχρι στιγμής είδαμε τα μέλη του κοινοβουλίου, από το 1981 μέχρι και το 2019 που έχουν εκλεχτεί περισσότερες φορές με βάση το κόμμα που εκπροσωπούν. Θα ήταν ιδιαιτέρως χρήσιμο να μελετήσω όχι απλώς τη δημοφιλία ως προς τη βουλή, αλλά και τη μέτρηση του ίδιου χαρακτηριστικού σε κάθε κόμμα ξεχωριστά. Βέβαια, αυτή η μέτρηση έχει κάποιους περιορισμούς, καθώς υπάρχουν κόμματα τα οποία είτε είχαν αρκετά μικρή εκπροσώπηση στη Βουλή είτε δεν μακροημέρευσαν και δεν είχαν αρκετές θητείες εντός Βουλής. Για αυτό το λόγο θα αναλύσω μόνο τα πιο ιστορικά κόμματα του κοινοβουλίου, δηλαδή το ΚΚΕ, η ΝΔ, το ΠΑΣΟΚ και ο ΣΥΡΙΖΑ.

Επίσης, όσον αφορά το κομμάτι της υλοποίησης του σχετικού γραφήματος η χρήση συναρτήσεων είναι ενδεδειγμένη. Θα έχω ίδιο τύπο γραφήματος και απλώς θα πρέπει να φιλτράρω το σύνολό μου (ανά κόμμα), και στη συνέχεια να στοιχίσω τις τιμές μου σε φθίνουσα σειρά ανά φορές εκλογής για κάθε βουλευτή. Δηλαδή το μόνο που θα αλλάξει θα είναι το κόμμα. Έτσι θα αποφύγω την επανάληψη του κώδικά μου που είναι μία από τις βασικές αρχές του προγραμματισμού. Η συνάρτηση party_plot δέχεται τέσσερα ορίσματα:

  • party : Ποιο κόμμα πρέπει να ελέγξω
  • times_elected_min : Μία μεταβλητή που έθεσα αργότερα. Το πρόβλημα που προέκυψε με την αρχική συνάρτηση είναι ότι υπήρχαν σημαντικές διαφορές στον αριθμό των εκπροσώπων που εκλέγει ένα κόμμα με μακρά ιστορία και σημαντικά ποσοστά ψήφων σε σχέση με κόμματα χαμηλότερης διάρκειας ή προτίμησης. Αν θέσω έναν γενικό αριθμό θα έχω ένα μη επιθυμητό αποτέλεσμα καθώς υπάρχει μεγάλη διαφορά μεταξύ των διαχρονικά δημοφιλών κομμάτων (ΠΑΣΟΚ, ΝΔ) με άλλα χαμηλότερης προτίμησης (ΚΚΕ, ΣΥΡΙΖΑ). Αν θέσω έναν πολύ υψηλό αριθμός (π.χ. ελάχιστες 10 θητείες) τα διαγράμματα στα μικρά κόμματα θα έχουν ελάχιστες παρατηρήσεις, ενώ αν θέσω ένα όριο πολύ χαμηλό θα έχω πολλές παρατηρήσεις σε γραφήματα της ΝΔ και δεν θα μπορεί να διαβαστεί.
  • title_text & subtitle_text: Για να θέσω το δικό μου τίτλο και υπότιτλο για το κάθε διάγραμμα συχνοτήτων κάθε κόμματος
  • party_color : Το χρώμα, έτσι ώστε να συμπίπτει το χρώμα των ράβδων με το κόμμα το οποίο εκπροσωπούν
Δείξε τον κώδικα
party_plot <- function(dataset, party, times_elected_min = 2,
                       title_text = NULL, subtitle_text = NULL,
                       party_color = "#1F3A93") {
    
    # Filter and summarize data
    party_df <- dataset %>%
        dplyr::filter(abbrNamesEl == party) %>%        # filter by party
        count(name,surname1, name1) %>%                     # count times elected
        arrange(-n) %>%                               # descending order
        drop_na() %>%
        dplyr::filter(n >= times_elected_min) %>%     # filter by min times elected
        mutate(fullname = paste0(surname1, " ", name1)) %>%
        separate(fullname, into = c("lastNameGR", "firstNameGR"), sep = " ", extra = "merge") %>%
        mutate(
            fullNameGR = paste0(lastNameGR, " ", firstNameGR),
            lastNameAndInitialGR = paste0(lastNameGR, " ", str_sub(firstNameGR, 1, 1), ".")
        )
    
    # Create highcharter plot
    hc <- highchart() %>%
        hc_chart(type = "bar", inverted = TRUE) %>%
        
        hc_title(
            text = title_text,
            style = list(fontWeight = "bold", fontSize = "16px")
        ) %>%
        
        hc_subtitle(
            text = subtitle_text,
            style = list(color = "#555555", fontSize = "12px")
        ) %>%
        
        hc_xAxis(
            categories = party_df$lastNameAndInitialGR,
            title = list(text = NULL),
            labels = list(
                style = list(fontSize = "11px", whiteSpace = "nowrap"),
                useHTML = TRUE
            )
        ) %>%
        
        hc_yAxis(
            title = list(text = "(#) Φορές εκλέχτηκε"),
            allowDecimals = FALSE,
            gridLineColor = "#E6E6E6",
            gridLineWidth = 1
        ) %>%
        
        hc_add_series(
            name = "Times elected",
            data = party_df$n,
            color = party_color
        ) %>%
        
        hc_plotOptions(
            bar = list(
                dataLabels = list(enabled = FALSE)  # hide numbers on bars
            )
        ) %>%
        
        hc_tooltip(
            useHTML = TRUE,
            headerFormat = "",
            pointFormat = paste0(
                "<b>{point.category}</b><br/>",
                "Κόμμα: <b>", party, "</b><br/>",
                "Εκλέχτηκε: <b>{point.y}</b> φορές"
            )
        ) %>%
        
        hc_legend(enabled = FALSE) %>%
        hc_credits(enabled = FALSE)
    
    return(hc)
    
}

Τα αποτελέσματα παρουσιάζονται με αλφαβητική σειρά με βάση το όνομα του εκάστοτε κόμματος.

ΚΚΕ

Το Κομμουνιστικό Κόμμα Ελλάδας ιδρύθηκε τον Νοέμβριο του 1918 ως Σοσιαλεργατικό Κίνημα Ελλάδας (ΣΕΚΕ), στον απόηχο της Οκτωβριανής Επανάστασης. Το 1920 εντάχθηκε στη Κομμουνιστική Διεθνή (Communist International - ComIntern) και το 1924 μετονομάστηκε σε Κομμουνιστικό Κόμμα Ελλάδας (ΚΚΕ). Με τη δικτατορία του Ιωάννη Μεταξά, το ΚΚΕ τέθηκε εκτός νόμου και πολλά μέλη του φυλακίστηκαν ή εξορίστηκαν. Κατά τη γερμανική κατοχή (1941-1944) το ΚΚΕ συμμετείχε στην αντίσταση ιδρύοντας το Εθνικό Απελευθερωτικό Μέτωπο (ΕΑΜ) και τον στρατιωτικό του βραχίονα, τον ΕΛΑΣ (Εθνικός Λαϊκός Απελευθερωτικός Στρατός). Μετά την απελευθέρωση υπήρξε σημαντική διαμάχη η οποία κορυφώθηκε με τον εμφύλιο (1946-1949). Ο Δημοκρατικός Στρατός Ελλάδας (ΔΣΕ) υπό κομμουνιστική ηγεσία ηττήθηκε το 1949. Το ΚΚΕ για πολλά χρόνια ήταν ένα κόμμα «εκτός νόμου» μέχρι και το 1974, όπου νομιμοποιήθηκε από τον Κωνσταντίνο Καραμανλή. Μέχρι και σήμερα έχει μείνει σταθερό στις θέσεις του με πιο χαρακτηριστικές την έξοδο της χώρας από την Ευρωπαϊκή Ένωση και το ΝΑΤΟ.

Η Αλέκα Παπαρήγα (Αθήνα, 1945 - ) είναι η πιο εκλεγμένη γυναίκα βουλευτής του Ελληνικού Κοινοβουλίου (1981-2019). Υπήρξε επικεφαλής του Κομμουνιστικού Κόμματος Ελλάδας (ΚΚΕ).
Πηγή φωτογραφίας: Wikimedia Commons, 2015 - Άδεια χρήσης: CC BY-SA 2.0. Για τη πρωτότυπη φωτογραφία μπορείτε να πατήσετε τον σύνδεσμο

Δείξε τον κώδικα
party_plot(
  dataset = clean_dataset,
  party = "ΚΚΕ",  # Example party abbreviation from abbrNamesEl
  times_elected_min = 5,
  title_text = "Βουλευτές του ΚΚΕ με πάνω από 5 θητείες",
  subtitle_text = "Αριθμός εκλογών ανά βουλευτή",
  party_color = "#FF6666"
)
Σχήμα 8: Βουλευτές που έχουν εκλεγεί περισσότερες φορές με το Κομμουνιστικό Κόμμα Ελλάδος (ΚΚΕ)

ΝΔ

Η Νέα Δημοκρατία ιδρύθηκε τον Οκτώβριο του 1974 από τον Κωνσταντίνο Καραμανλή, αμέσως μετά την πτώση της δικτατορίας. Θεωρείται ο πολιτικός διάδοχος της Εθνικής Ριζοσπαστικής Ενώσεως (ΕΡΕ) και τοποθετείται στον χώρο της κεντροδεξιάς. Στις πρώτες μεταπολιτευτικές εκλογές κέρδισε συντριπτικά, εξασφαλίζοντας πλειοψηφία που επέτρεψε τη σύνταξη νέου Συντάγματος και τη διενέργεια δημοψηφίσματος για τη μορφή του πολιτεύματος. Μετά τη διακυβέρνηση Καραμανλή, το κόμμα πέρασε σε μακρά περίοδο αντιπολίτευσης (1981-1990), μέχρι τη νίκη υπό τον Κωνσταντίνο Μητσοτάκη. Στη συνέχεια εναλλάχθηκε στην εξουσία με το ΠΑΣΟΚ, αποτελώντας σταθερά τον έναν πόλο του ελληνικού δικομματισμού. Τα χρόνια της κρίσης, υπό τον Αντώνη Σαμαρά, σχημάτισε κυβέρνηση συνεργασίας, ενώ από το 2019 κυβερνά υπό τον Κυριάκο Μητσοτάκη.

Ο Κωνσταντίνος Μητσοτάκης (Χαλέπα Χανίων, 1918 - 2017) ήταν Έλληνας πολιτικός. Διετέλεσε πρωθυπουργός της χώρας από το 1990 μέχρι τον Οκτώβριο του 1993. Ο γιος του, Κυριάκος Μητσοτάκης, αναδείχθηκε αρχηγός του κόμματος το 2016 και το 2019 εκλέχτηκε πρωθυπουργός της χώρας.
Πηγή φωτογραφίας: Ελληνικό Λογοτεχνικό και Ιστορικό Αρχείο - Μορφωτικό Ίδρυμα Εθνικής Τραπέζης, 1950 - Άδεια χρήσης: CC BY. Η φωτογραφία έχει υποστεί βασική επεξεργασία (περικοπή και αφαίρεση φόντου). Η πρωτότυπη εικόνα βρέθηκε στο Europeana.

Δείξε τον κώδικα
party_plot(
  dataset = clean_dataset,
  party = "ΝΔ",  # Example party abbreviation from abbrNamesEl
  times_elected_min = 10,
  title_text = "Βουλευτές της ΝΔ με πάνω από 10 θητείες",
  subtitle_text = "Αριθμός εκλογών ανά βουλευτή",
  party_color = "#0492c2"
)
Σχήμα 9: Βουλευτές που έχουν εκλεγεί περισσότερες φορές με τη Νέα Δημοκρατία (ΝΔ)

ΠΑΣΟΚ

Το Πανελλήνιο Σοσιαλιστικό Κίνημα (ΠΑΣΟΚ) ιδρύθηκε στις 3 Σεπτεμβρίου 1974 από τον Ανδρέα Παπανδρέου. Τοποθετήθηκε στον χώρο της κεντροαριστεράς, με ριζοσπαστικό λόγο στα πρώτα χρόνια του που σταδιακά μετριάστηκε. Το 1981 κέρδισε τις εκλογές με σαρωτική πλειοψηφία, εγκαινιάζοντας μία μακρά περίοδο κυριαρχίας. Κατά τη δεκαετία του ’80 πραγματοποίησε σημαντικές κοινωνικές μεταρρυθμίσεις, αλλά αντιμετώπισε κριτική για τη διόγκωση του δημοσίου τομέα και του χρέους. Μετά τον θάνατο του Ανδρέα Παπανδρέου (1996), τη σκυτάλη πήρε ο Κώστας Σημίτης, ο οποίος οδήγησε τη χώρα στην Ευρωζώνη. Η οικονομική κρίση του 2010 σημάδεψε βαθιά το κόμμα, καθώς η κυβέρνηση Γ. Παπανδρέου υπέγραψε το πρώτο Μνημόνιο. Η εκλογική κατάρρευση που ακολούθησε ήταν πρωτοφανής: από 43,9% (2009) σε 4,7% (Ιανουάριος 2015). Τα τελευταία χρόνια, υπό τον Νίκο Ανδρουλάκη, το κόμμα επιχειρεί να ανακάμψει ως τρίτη δύναμη.

Ο Ανδρέας Γ. Παπανδρέου (Χίος, 1919-1996) ήταν Έλληνας πολιτικός, ιδρυτής και αρχηγός του ΠΑ.ΣΟ.Κ (Πανελλήνιο Σοσιαλιστικό Κίνημα). Διετέλεσε πρωθυπουργός της χώρας από το 1981 μέχρι και το 1989 καθώς και από τον Οκτωβριο του 1993 μέχρι τον Ιανουάριο του 1996. Κατά τη διακυβέρνησή του έκανε σημαντικές μεταρρυθμίσεις κοινωνικού χαρακτήρα όπως η κατάργηση του θεσμού της προίκας, καθιέρωση του πολιτικού γάμου, διεύρυνση δικαιώματος ψήφου μειώνοντας το ηλικιακό όριο από τα 21 στα 18 έτη. Μία σημαντική συνεισφορά είναι η ίδρυση του Εθνικού Συστήματος Υγείας (ΕΣΥ). Έχει δεχτεί κριτική για την τεράστια αύξηση των δημοσίων δαπανών, της αύξησης του χρέους της χώρας, την αύξηση των δημοσίων υπαλλήλων που συνοδεύτηκαν από αδιαφανείς διαδικασίες επιλογής.
Πηγή φωτογραφίας: Wikimedia - Φωτογραφία του 1981 - Άδεια χρήσης: Public Domain. Η πρωτότυπη εικόνα βρέθηκε στο Europeana.

Δείξε τον κώδικα
party_plot(
  dataset = clean_dataset,
  party = "ΠΑΣΟΚ",  # Example party abbreviation from abbrNamesEl
  times_elected_min = 10,
  title_text = "Βουλευτές του ΠΑΣΟΚ με πάνω από 10 θητείες",
  subtitle_text = "Αριθμός εκλογών ανά βουλευτή",
  party_color = "#95bb72"
)
Σχήμα 10: Βουλευτές που έχουν εκλεγεί περισσότερες φορές με το Πανελλήνιο Σοσιαλιστικό Κίνημα (ΠΑΣΟΚ)

ΣΥΡΙΖΑ

Ο Συνασπισμός Ριζοσπαστικής Αριστεράς (ΣΥΡΙΖΑ) έχει τις ρίζες του στον Συνασπισμό της Αριστεράς και της Προόδου, ο οποίος προέκυψε το 1991 από τη συνένωση μικρών αριστερών κομμάτων. Μέχρι το 2012 παρέμεινε μία μικρή κοινοβουλευτική δύναμη, με ποσοστά που σπανίως ξεπερνούσαν το 5%. Η εκρηκτική άνοδός του συνέπεσε με την οικονομική κρίση: από 4,6% (2009) σε 26,9% (Ιούνιος 2012) και τελικά 36,3% (Ιανουάριος 2015), κερδίζοντας τις εκλογές. Υπό τον Αλέξη Τσίπρα, κυβέρνησε σε συνεργασία με τους Ανεξάρτητους Έλληνες (ΑΝΕΛ) και, παρά τη ρητορική κατά της λιτότητας, υπέγραψε τελικά τρίτο Μνημόνιο. Στις εκλογές του 2019 ηττήθηκε, ενώ στις εκλογές του 2023 υπέστη σημαντικές απώλειες. Η ιδιαιτερότητα του ΣΥΡΙΖΑ από αναλυτικής σκοπιάς είναι ότι εκτινάχθηκε από μικρές ποσοστιαίες μονάδες στον ρόλο αξιωματικής αντιπολίτευσης και κυβέρνησης μέσα σε λίγα χρόνια.

Δείξε τον κώδικα
party_plot(
  dataset = clean_dataset,
  party = "ΣΥΡΙΖΑ",  # Example party abbreviation from abbrNamesEl
  times_elected_min = 5,
  title_text = "Βουλευτές του ΣΥΡΙΖΑ με πάνω από 5 θητείες",
  subtitle_text = "Αριθμός εκλογών ανά βουλευτή",
  party_color = "#e27bb1"
)
Σχήμα 11: Βουλευτές που έχουν εκλεγεί περισσότερες φορές με το Συνασπισμό Ριζοσπαστικής Αριστεράς (ΣΥΡΙΖΑ)

Δικομματισμός στην Ελλάδα

Η διαχρονική επιμονή τόσο σε κόμματα, όσο και σε ίδια πρόσωπα είναι ξεκάθαρη. Ένα ενδιαφέρον στοιχείο θα ήταν το ποσοστό του δικομματισμού, δηλαδή το ποσοστό το οποίο συγκεντρώνουν τα δύο μεγαλύτερα κόμματα. Αυτή η τάση, όπως γνωρίζουμε, ειδικά στα πρώτα χρόνια της Μεταπολίτευσης ήταν αρκετά υψηλή. Σε αυτή την ενότητα δεν θα αναλύσω απευθείας τα δεδομένα των εκλογών, αλλά των εκλεγμένων βουλευτών και θα συγκρίνω τι ποσοστό αυτών ανήκουν στα πρώτα δύο κόμματα. Εδώ βέβαια θα πρέπει να διευκρινιστεί ότι υπάρχει μεγάλη απόκλιση μεταξύ των εκλογικών ποσοστών και των ποσοστών εδρών στη Βουλή κυρίως λόγω του μπόνους εδρών στο πρώτο κόμμα και των εξωκοινοβουλευτικών κομμάτων. Έχει ενδιαφέρον να εξετάσουμε τη πόλωση διαχρονικά και αν δούμε μειωμένα ποσοστά αυτό ενδεχομένως να σημαίνει μία κάποια αντίδραση στο πολιτικό σύστημα. Στο συγκεκριμένο διάγραμμα παρατηρώ εξαιρετικά υψηλά ποσοστά εκπροσώπησης στη Βουλή για τα πρώτα δύο κόμματα. Τα χρόνια της κρίσης τα ποσοστά των δύο πρώτων έχουν πέσει σημαντικά και από εκεί που εκπροσωπούσαν το 80%, πλέον αντιστοιχούν στο 60%. Από προηγούμενες παραγράφους γνωρίζουμε ότι το Ελληνικό Κοινοβούλιο τα χρόνια της κρίσης αύξησε κατά πολύ τις κοινοβουλευτικές ομάδες που είχε. Συνδυάζοντας τα παραπάνω, τεκμαίρεται ότι υπήρχε μία αντίδραση του κόσμου η οποία ξεκίνησε με το ξεκίνημα της οικονομικής κρίσης η οποία μεν δεν άλλαξε το πολιτικό σκηνικό από θέμα κομμάτων, αλλά έσπασε το δίπολο και η αντίδραση του κόσμου διαχύθηκε σε διάφορα μικρότερα κόμματα.

Δείξε τον κώδικα
f = clean_dataset %>% dplyr::group_by(period_name, abbrNamesEl) %>% count() %>% ungroup(abbrNamesEl) %>% top_n(., n =2, wt = n) %>% tidyr::pivot_wider(., names_from = abbrNamesEl, values_from = n) %>%
    mutate(seatsTopTwoParties = rowSums(across(c(ΝΔ, ΠΑΣΟΚ, ΣΥΡΙΖΑ)), na.rm = TRUE)) %>%
    mutate(pctSeatsTopTwoParties = round( (seatsTopTwoParties/ 300) * 100, digits = 1) )

highchart() %>%
    hc_chart(type = "spline") %>%
    hc_title(text = "Εκπροσώπηση δικομματισμού", style = list(fontSize = "20px", fontWeight = "bold")) %>%
    hc_subtitle(text = "Ποσοστό (%) εκπροσώπησης δικομματισμού στην Ελληνική Βουλή") %>%
    hc_xAxis(categories = f$Term , title = list(text = "Θητείες"), gridLineWidth = 0) %>%
    hc_yAxis(title = list(text = "Ποσοστό θέσεων δύο πρώτων κομμάτων (%)"), gridLineWidth = 0) %>%
    hc_add_series(
        data = f$pctSeatsTopTwoParties,
        name = "Ποσοστό",
        color = "#6366F1",
        marker = list(enabled = TRUE, radius = 4, symbol = "circle")
    ) %>%
     hc_tooltip(
    useHTML = TRUE,
    headerFormat = '<span style="font-size:14px;">Θητεία<b>: {point.x}</b></span><br/>',
    pointFormat = '<span style="color:{series.color};">●</span> <b>{series.name}</b>: {point.y}<br/>',
    backgroundColor = "#ffffff",
    borderColor = "#e5e7eb",
    style = list(color = "#111827", fontSize = "14px")
  ) %>%
  hc_plotOptions(
    spline = list(
      lineWidth = 4,
      marker = list(symbol = "circle", radius = 5)
    )
  ) %>%
    hc_legend(enabled = FALSE)
Warning: Unknown or uninitialised column: `Term`.

Εκλεξιμότητα γυναικών

Μία σημαντική ένδειξη υγείας του κοινοβουλίου και συνεπακόλουθα της κοινωνίας είναι η αντιπροσωπευτικότητα αυτού. Να μπορούν να ακουστούν όλες οι φωνές και όλα τα κοινωνικά ζητήματα. Μία από τις πιο προφανείς ενδείξεις είναι κατά πόσο η κοινωνία εξελίσσεται και αποδέχεται ως εξίσου ικανές τις γυναίκες για αντιπροσώπους της νομοθετικής εξουσίας. Ιστορικά, η χώρα μας πάσχει σε αυτόν τον τομέα, με τις γυναίκες να υποεκπροσωπούνται στην αγορά εργασίας. Τα ίδια κοινωνικά στερεότυπα δείχνουν να κυριαρχούν ακόμα με χαμηλότατη εκλογή γυναικών βουλευτών. Μέχρι και τις πρώτες 10 περιόδους του Ελληνικού Κοινοβουλίου οι γυναίκες αντιπροσώπευαν λιγότερο από το 10% των συνολικών βουλευτών. Τα τελευταία χρόνια η κατάσταση έχει βελτιωθεί και έχει κατά κάποιο τρόπο κανονικοποιηθεί η παρουσία των γυναικών στη Βουλή, χωρίς να έχει επιτευχθεί ισότιμη εκπροσώπηση. Αξίζει να σημειώσουμε ότι οι γυναίκες στην Ελλάδα έλαβαν δικαίωμα ψήφου το 1952. Έχουμε κλείσει αισίως 70 έτη από το δικαίωμα εκλέγειν και εκλεγεσθαι των γυναικών και η εκπροσώπηση των γυναικών είναι στο 1/4 των θέσεων του Κοινοβουλίου. Ως χώρα έχουμε θεσμοθετήσει την ισότητα των ανδρών και γυναικών, όμως δεν έχουμε την απαραίτητη κοινωνική εκπαίδευση για να καταπολεμήσουμε τις ιδεοληψίες μας στο θέμα των ικανοτήτων και κατά πόσο το φύλο αποτελεί παράγοντα αξιολόγησης ενός ατόμου.

Η Ελένη Σκούρα (Βόλος, 1896 - 1991) ήταν η πρώτη Ελληνίδα βουλευτής, η οποία εκλέχτηκε το 1953, ένα χρόνο αφού ψηφίστηκε το δικαίωμα ψήφου και εκλογής στις γυναίκες.
Πηγή φωτογραφίας: Ελληνικό Λογοτεχνικό και Ιστορικό Αρχείο - Μορφωτικό Ίδρυμα Εθνικής Τραπέζης, 1940 - Άδεια χρήσης: CC BY. Η φωτογραφία έχει υποστεί βασική επεξεργασία (περικοπή και μετατροπή σε σκίτσο). Η πρωτότυπη εικόνα βρέθηκε στο Europeana.

Δείξε τον κώδικα
test <- clean_dataset |> select(period_num, gender)

test1 <- test |>
    group_by(period_num, gender) |>
    count() |>
    pivot_wider(names_from = gender, values_from = n, values_fill = 0) # fill missing with 0

colors <- c(
    "#90C3FF",  # blue for men
    "#FF9090"   # red for women
)

# Create professional stacked percent area plot
highchart() %>%
    hc_chart(type = "areaspline") %>%
    
    hc_title(
        text = "Εκπρόσωποι κοινοβουλίου ανά φύλο και βουλευτική περίοδο",
        style = list(fontSize = "20px", fontWeight = "bold")
    ) %>%
    
    hc_subtitle(
        text = "Στις τελευταίες πέντε περιόδους η εκπροσώπηση των γυναικών είναι κάτω του 1/4 των εκπροσώπων",
        style = list(fontSize = "12px", color = "#555555")
    ) %>%
    
    hc_xAxis(
        categories = test1$period_num,
        title = list(text = "Θητείες"),
        labels = list(style = list(fontSize = "11px"))
    ) %>%
    
    hc_yAxis(
        title = list(text = "Ποσοστό (%)"),
        labels = list(format = "{value}%"),
        max = 100,
        gridLineColor = "#E6E6E6",
        gridLineWidth = 1
    ) %>%
    
    hc_colors(colors) %>%
    
    hc_plotOptions(
        areaspline = list(
            stacking = "percent",   # stack to percent
            lineWidth = 2,
            fillOpacity = 0.6,
            marker = list(enabled = FALSE)
        )
    ) %>%
    
    hc_add_series(name = "Βουλευτές", data = test1$άνδρας) %>%
    hc_add_series(name = "Βουλεύτριες", data = test1$γυναίκα) %>%
    
    hc_tooltip(
        shared = TRUE,
        useHTML = TRUE,
        formatter = JS("
    function() {
      var total = 0;
      for (var i = 0; i < this.points.length; i++) {
        total += this.points[i].y;
      }
      // get the category name from the x-axis categories
      var categoryName = this.points[0].series.xAxis.categories[this.points[0].point.x];
      
      var s = '<b>' + categoryName + '</b><br>';
      for (var i = 0; i < this.points.length; i++) {
        var pct = Math.round((this.points[i].y / total) * 100);
        s += '<span style=\"color:' + this.points[i].color + '\">●</span> ' +
             this.points[i].series.name + ': ' + this.points[i].y + ' (' + pct + '%)<br>';
      }
      return s;
    }
  ")
    ) %>%
    
    hc_legend(
        layout = "horizontal",
        align = "center",
        verticalAlign = "bottom"
    ) %>%
    
    hc_credits(enabled = FALSE)

Βέβαια, το να ρίξουμε όλο το βάρος στην κοινωνία είναι λίγο άδικο υπό το έρεισμα ότι τα ίδια τα κόμματα επιλέγουν τους υποψηφίους τους και προμοτάρουν λίγο περισσότερο ορισμένα πρόσωπα. Μήπως και τα κόμματα δεν προβάλλουν τόσο ισότιμα τις γυναίκες υποψήφιες τους; Για να απαντηθεί αυτό η ανάλυση επεκτάθηκε και σε επίπεδο κομμάτων, εξετάζοντας την αναλογία γυναικών/ανδρών ως προς τους συνολικά εκλεγμένους βουλευτές κάθε κόμματος. Εδώ φαίνεται ότι η Νέα Δημοκρατία ως πιο συντηρητικό κόμμα είναι αυτό που έχει σταθερά πολύ χαμηλή εκπροσώπηση των γυναικών. Από την άλλη μεριά παρατηρούμε αρκετά μεγάλη διαφορά στα αριστερά κόμματα με σταθερή παρουσία γυναικών και σε σημαντικά υψηλότερα ποσοστά. Από τα κόμματα με διαχρονική παρουσία στη Βουλή το ΚΚΕ υπήρξε αυτό με την υψηλότερη συμμετοχή γυναικών στην 11η περίοδο της Βουλής, ακολουθούμενη από τον ΣΥΡΙΖΑ, την 15η περίοδο με 38% η οποία ήταν αρκετά σημαντική καθώς εκτός από ποσοστιαία σημαντική ήταν και σε απόλυτους αριθμούς μιας και εκείνο το καιρό ο ΣΥΡΙΖΑ είχε αρκετά μεγάλα ποσοστά και σημαντική εκπροσώπηση στη Βουλή.

Η Βασιλική Θάνου (Χαλκίδα, 1950 - ) είναι η πρώτη γυναίκα που έχει διατελέσει πρωθυπουργός. Ήταν υπηρεσιακή πρωθυπουργός όταν παραιτήθηκε η κυβέρνηση των ΣΥΡΙΖΑ - ΑΝΕΛ και προκηρύχθηκαν εκλογές. Μέχρι και σήμερα αποτελεί τη μοναδική γυναίκα που έχει υπάρξει σε αυτό το αξίωμα.
Πηγή φωτογραφίας: Wikimedia Commons, 2015 - Άδεια χρήσης: CC BY-SA 2.0. Η φωτογραφία έχει υποστεί βασική επεξεργασία.

Δείξε τον κώδικα
test = clean_dataset |> select(period_num, gender, abbrNamesEl)
test1 = test |>
  group_by(period_num, gender, abbrNamesEl) |>
  count() |>
  pivot_wider(names_from = gender, values_from = n) %>%
  mutate(across(c(άνδρας, γυναίκα), ~ replace_na(., 0))) %>%
  mutate(
    sum = γυναίκα + άνδρας,
    pct = round( 100 * (γυναίκα / sum), 1) ) %>%
  ungroup() %>%
  select(period_num, abbrNamesEl, pct) %>%
  dplyr::filter(abbrNamesEl %in% c("ΣΥΡΙΖΑ", "ΝΔ", "ΠΑΣΟΚ", "ΚΚΕ")) %>%
  group_by(period_num) %>%
  pivot_wider(names_from = abbrNamesEl, values_from = pct) %>%
  dplyr::filter(period_num > 9)


highchart() %>%
  hc_chart(type = "spline") %>%
  hc_title(text = "Συμμετοχή γυναικών ανά κόμμα") %>%
  hc_subtitle(text = "Η Νέα Δημοκρατία ποτέ στην ιστορία της δεν εκπροσωπήθηκε από γυναίκες σε υψηλότερο του 17%, σε αντίθεση με άλλα ιστορικά κόμματα, όπως ο ΣΥΡΙΖΑ, το ΚΚΕ και το ΠΑΣΟΚ.") %>%
  hc_xAxis(
    categories = test1$period_num,
    title = list(text = "Κοινοβουλευτικές θητείες")
  ) %>%
  hc_yAxis(reverse = TRUE,
    title = list(text = "Ποσοστό (%) γυναικών")
  ) %>%
  hc_add_series(name = "ΚΚΕ", data = test1$ΚΚΕ, color = "#ff6666") %>%
  hc_add_series(name = "ΝΔ", data = test1$ΝΔ, color = "#0492c2") %>%
  hc_add_series(name = "ΠΑΣΟΚ", data = test1$ΠΑΣΟΚ, color = "#95bb72") %>%
  hc_add_series(name = "ΣΥΡΙΖΑ", data = test1$ΣΥΡΙΖΑ, color = "#e27bb1") %>%

  hc_tooltip(shared = TRUE)

Εκλεξιμότητα νομού

Αυτή τη στιγμή έχω υπολογίσει

  • τη σύνθεση των κοινοβουλίων ανά θητεία
  • τους βουλευτές με τις περισσότερες θητείες σε εθνικό επίπεδο
  • τους βουλευτές με τις περισσότερες θητείες σε επίπεδο κόμματος

Τώρα, θα υπολογίσω τους πιο δημοφιλείς βουλευτές, ανά νομό. Προφανώς, σε αυτήν την περίπτωση εφαρμόζεται η ίδια λογική με αυτή της προηγούμενης ενότητας (με μικρές μετατροπές). Εγώ προσωπικά θα χαρακτήριζα τη χρήση συναρτήσεων σε αυτή τη περίπτωση σχεδόν υποχρεωτική, μιας και όλοι οι νομοί είναι 50! Για την εύρεση των συχνοτήτων θα χρησιμοποιήσω τη εντολή count.

Δείξε τον κώδικα
constituency_freqs <- function(input_constituency, min_times_elected){
  cont_df = clean_dataset %>% dplyr::filter(region == input_constituency) %>% 
    count(surname1, name1, fullNamesEl, abbrNamesEl, Color) %>%
    arrange(-n) |>
    dplyr::filter(n >= min_times_elected) %>%
    mutate(FullNameInitial = paste0(surname1, " ", str_sub(name1, 1, 1), "."))
  
highchart() %>%
    hc_chart(type = "bar") %>%
    hc_title(text = "Βουλευτές που εκλέχτηκαν πιο πολλές φορές") %>%
    hc_subtitle(text = "Πόσες φορές εκπροσώπησαν το συγκεκριμένο κόμμα στο Ελληνικό Κοινοβούλιο") %>%
    hc_xAxis(categories = cont_df$FullNameInitial) %>%
    hc_yAxis(title = list(text = "Value")) %>%
    hc_series(
        list(
            name = "# Αριθμός εκλέχτηκε",
            data = lapply(1:nrow(cont_df), function(i) {
                list(
                    y = cont_df$n[i],
                    affiliate = cont_df$abbrNamesEl[i],
                    color = cont_df$Color[i]
                )
            }),
            dataLabels = list(
                enabled = TRUE,
                format = "{y}",
                style = list(fontSize = "12px", textOutline = "none", color = "#FFFFFF")
            )
        )
    ) %>%
    hc_plotOptions(
        bar = list(
            borderRadius = 3,
            pointPadding = 0.2,
            groupPadding = 0.1
        )
    ) %>%
    hc_tooltip(
        headerFormat = "",
        pointFormat = "<b>{point.category}</b><br/>
                  Κόμμα: <b>{point.affiliate}</b><br/>
                  Εκλέχτηκε: <b>{point.y}</b> φορές"
    ) %>%
    hc_legend(enabled = FALSE) %>%
    hc_caption(
        text = "Colors represent different affiliations",
        style = list(fontSize = "12px", color = "#666666")
    )  
}

Επικρατείας

Δείξε τον κώδικα
constituency_freqs("ΕΠΙΚΡΑΤΕΙΑΣ", 3)

Αττικής

Δείξε τον κώδικα
constituency_freqs("Α' ΑΘΗΝΩΝ",5)
Δείξε τον κώδικα
constituency_freqs("Β' ΑΘΗΝΩΝ",7)
Δείξε τον κώδικα
constituency_freqs("Α' ΠΕΙΡΑΙΩΣ",5)
Δείξε τον κώδικα
constituency_freqs("Β' ΠΕΙΡΑΙΩΣ",5)

Κεντρική Ελλάδα

Δείξε τον κώδικα
constituency_freqs("ΒΟΙΩΤΙΑΣ",5)
Δείξε τον κώδικα
constituency_freqs("ΕΥΡΥΤΑΝΙΑΣ",2)
Δείξε τον κώδικα
constituency_freqs("ΦΩΚΙΔΑΣ",2)
Δείξε τον κώδικα
constituency_freqs("ΦΘΙΩΤΙΔΑΣ",3)

Κεντρική Μακεδονία

Δείξε τον κώδικα
constituency_freqs("Α' ΘΕΣΣΑΛΟΝΙΚΗΣ",6)
Δείξε τον κώδικα
constituency_freqs("Β' ΘΕΣΣΑΛΟΝΙΚΗΣ",6)
Δείξε τον κώδικα
constituency_freqs("ΚΙΛΚΙΣ",3)
Δείξε τον κώδικα
constituency_freqs("ΠΕΛΛΑΣ",3)
Δείξε τον κώδικα
constituency_freqs("ΠΙΕΡΙΑΣ",3)
Δείξε τον κώδικα
constituency_freqs("ΣΕΡΡΕΣ",3)

Κοινοβουλευτική ανανέωση

Παρατηρούμε ότι λίγα είναι τα κόμματα που κυριαρχούν στο ελληνικό πολιτικό σκηνικό και είναι κάπως ανθεκτικά στο πέρασμα του χρόνου. Παρά την πολιτική αναταραχή και τις ανακατατάξεις του πολιτικού σκηνικού με το ξέσπασμα της οικονομικής κρίσης, υπήρξαν αρκετά εφήμερα κόμματα και στην ουσία είχαμε μία ανακατάταξη και μετακινήσεις ψηφοφόρων μεταξύ των ιστορικών κομμάτων. Η απουσία σημαντικής πολιτικής ανατροπής από νέα κόμματα μας οδηγεί, κατά το πλείστον, σε επιλογές προσώπων εντός των υπαρχόντων κομμάτων. Έτσι λοιπόν προκύπτει το απολύτως λογικό ερώτημα. Οκ, ψηφίζουμε στη συντριπτική πλειοψηφία μεταξύ τεσσάρων κομμάτων, μήπως όμως οι επιλογές μας είναι προσανατολισμένες στο να αλλάξουν τουλάχιστον τα πρόσωπα που μας εκπροσωπούν. Με απλά λόγια θα ήθελα να μελετήσω κατά πόσο κάθε νέα κοινοβουλευτική θητεία αποτελείται από βουλευτές που δεν έχουν ξαναεκλεγεί και ανανεώνεται η σύνθεση της.

Για την υλοποίηση θα χρησιμοποιήσω το τακτοποιημένο σύνολο δεδομένων και θα εξάγω δύο υποσύνολα που θα αντιστοιχούν στη n βουλευτική θητεία και το άλλο στη n+1. Στη συνέχεια θα συγκρίνω τις τις αντίστοιχες στήλες των ονομάτων για να διαπιστώσω πόσες αντιστοιχίσεις υπάρχουν, δηλαδή επανεκλογή βουλευτών. Επίσης, λαμβάνω υπόψιν στη πρόσφατη εκλογή με όλες τις παλαιότερες περιόδους ώστε να εντοπίσω και παλαιότερες εκλογές ίδιων προσώπων που μπορεί να μην εκλέχτηκαν στις προηγούμενες εκλογές.

Σε αυτή τη περίπτωση μελετάμε τη περίοδο 1981 - 2019 (Γ’ περίοδος - ΙΖ´ περίοδος), επομένως η σύγκριση έχει νόημα να ξεκινήσει από τη περίοδο Δ’ (1985), ώστε να να έχω προηγούμενη περίοδο σύγκρισης. Στο διάγραμμα υπάρχουν τάσεις που υποδεικνύουν ισχυρές τάσεις διατήρησης όμοιων προσώπων με μόνο δύο εκλογικές αναμετρήσεις οδήγησαν σε σημαντική ανανέωση του κοινοβουλίου αντικαθιστώντας ουσιαστικά τα μισά μέλη με νεοεκλεγέντες,

Δείξε τον κώδικα
get_new_members <- function(term){
    
    # Members from previous terms
    previous_parls <- clean_dataset |>
        dplyr::filter(period_num < term) |>
        dplyr::select(name)
    
    # Members in the current term
    current_parl <- clean_dataset |>
        dplyr::filter(period_num == term) |>
        dplyr::select(name)
    
    # Count total in current term
    how_many_current_term <- nrow(current_parl)
    
    # Count those who were already in previous terms
    established_members <- sum(current_parl$name %in% previous_parls$name)
    
    # Count new members
    new_members <- how_many_current_term - established_members
    
    return(list(established_members, new_members))
}

# Apply to terms 4 through 17
results <- lapply(4:17, get_new_members)

# Prepare data frame for plotting
df <- data.frame(
    num = 4:17,
    established = sapply(results, `[[`, 1),
    new = sapply(results, `[[`, 2)
)

# Highchart plot
highchart() %>%
    hc_chart(type = "areaspline") %>%
    hc_xAxis(categories = df$num) %>%
    hc_yAxis(title = list(text = "Ποσοστό νέων βουλευτών")) %>%
    hc_title(text = "Βουλευτές που εκλέγονται πρώτη φορά") %>%
    hc_subtitle(text = "Οι βαθμοί που κυριαρχούν είναι κάτω του 7, προσεγγίζοντας ακόμα και το 90%. Οι απόφοιτοι με βαθμό πτυχίου από 6 μέχρι και 7 είναι οι πιο συχνοί και καταλαμβάνουν το 55% με 70% των συνολικών αποφοίτων") %>%
    hc_colors(c("#1f77b4", "#ff7f0e")) %>%
    hc_plotOptions(
        areaspline = list(
            stacking = "percent",
            marker = list(enabled = FALSE),
            lineWidth = 2,
            fillOpacity = 0.6
        )
    ) %>%
    hc_add_series(name = "Παλιοί βουλευτές", data = df$established) %>%
    hc_add_series(name = "Πρώτη θητεία", data = df$new) %>%
    hc_tooltip(shared = TRUE)

Σωρευτικός αριθμός βουλευτών

Σε όλη την έκταση του άρθρου μελέτησα τη συχνότητα εκλογής των κομμάτων ή των εκπροσώπων τους για διάφορα κριτήρια. Έκρινα χρήσιμο να υπάρχει και μία συνολική ανασκόπηση των αποτελεσμάτων των εκλογών. Η κριτική της μη πραγματικής πολιτικής αλλαγής εκφράζεται μέσα και από την διαχρονική επιμονή σε εκπροσώπους από συγκεκριμένα κόμματα. Υπολογίζουμε λοιπόν το συνολικό αριθμό - ποσοστό των βουλευτών με βάση το κόμμα που εκπροσωπούσαν στο τέλος της κάθε θητείας. Το ΠΑΣΟΚ και η Νέα Δημοκρατία αποτελούν τα κόμματα που η εκπροσώπησή τους ξεπέρασε τα 3/4 των συνολικών βουλευτών στην ιστορία του κοινοβουλίου. Αν συμπεριλάβω το ΚΚΕ και το ΣΥΡΙΖΑ, τότε το συνολικό ποσοστό από όλα τα προαναφερθέντα κόμματα αγγίζει το 90%. Όλα τα υπόλοιπα αποτελούν ανεξάρτητους βουλευτές ή βουλευτές μικρότερων κομμάτων, στοιχείο που συνηγορεί ότι είμαστε αρκετά μακριά από τη λογική της πολιτικής αλλαγής.

Δείξε τον κώδικα
library(dplyr)
library(highcharter)

# Summarize party counts using the new variable `abbrNamesEl`
gh <- clean_dataset |>
  count(abbrNamesEl) |>
  arrange(-n) |>
  mutate(abbrNamesEl = ifelse(n > 70, abbrNamesEl, "Άλλο")) |>
  group_by(abbrNamesEl) |>
  mutate(n = sum(n)) |>
  distinct() |>
  ungroup() |>
  mutate(pct = round( (n / sum(n))*100 , 1)) |>
  # get a color per party
  left_join(
    clean_dataset |> 
      group_by(abbrNamesEl) |> 
      summarise(Color = first(Color), .groups = "drop"),
    by = "abbrNamesEl"
  )

# Prepare data for highcharter pie with colors
pie_data <- lapply(1:nrow(gh), function(i){
  list(
    name = gh$abbrNamesEl[i],
    y    = gh$pct[i],
    color = gh$Color[i]
  )
})

# Highcharter semicircle donut
highchart() %>%
  hc_chart(type = "pie", backgroundColor = NULL) %>%
  hc_title(text = "Σύνολο εκπροσώπησης βουλευτών ανά κόμμα (1981 - 2019)", align = "center") %>%
  hc_subtitle(text = "Το ΠΑΣΟΚ και η Νέα Δημοκρατία αριθμούν το 76% των βουλευτών της ιστορίας του κοινοβουλίου") %>%
  hc_plotOptions(pie = list(
    startAngle = -90,
    endAngle   = 90,
    center     = c("50%", "75%"),
    size       = "110%",
    innerSize  = "60%",
    showInLegend = TRUE,
    dataLabels = list(
      enabled = TRUE,
      distance = -30,
      style = list(fontSize = "12px"),
      formatter = JS("function() { return '<b>'+ this.point.name +'</b>: '+ this.percentage.toFixed(1) +'%'; }")
    )
  )) %>%
  hc_add_series(
    name = "Share",
    data = pie_data
  ) %>%
  hc_tooltip(pointFormat = '{series.name}: <b>{point.percentage:.1f}%</b>') %>%
  hc_legend(layout = "horizontal", align = "center", verticalAlign = "bottom") 

Τέλος, έχει αντίστοιχο ενδιαφέρον να μελετήσουμε το σωρευτικό ποσοστό συμμετοχής των γυναικών στο Ελληνικό Κοινοβούλιο. Για τα αποτελέσματα δεν είμαστε ιδιαίτερα αισιόδοξοι μιας και σε προηγούμενη ενότητα διαπιστώσαμε ότι είναι ιστορικά χαμηλή με την υψηλότερη να κυμαίνεται τα τελευταία χρόνια στο 25%. Η εικόνα δεν είναι καθόλου καλή όταν αναλύσουμε το φύλο σε βάθος 40ετίας μιας και το ποσοστό των βουλευτριών περιορίζεται στο 12.8%. Σε απόλυτους αριθμούς αυτό αντιστοιχεί σε 576 γυναίκες, έναντι 3927 ανδρών συναδέλφων τους.

Δείξε τον κώδικα
gh = clean_dataset |>
  count(gender) |>
  arrange(-n) |>
  mutate(pct = round( 100* (n/sum(n)), digits = 1) ) |>
  drop_na(gender)

colors <- c(
  "#90C3FF",
  "#FF9090"
)

highchart() %>%
    hc_chart(type = "pie") %>%
    hc_title(text = "Σύνολο εκπροσώπησης βουλευτών ανά φύλο (1981 - 2019)", align = "center") %>%
    hc_subtitle(text = "Οι γυναίκες υποεκπροσωπούνται ιστορικά. Σε όλη την πρόσφατη ιστορία του Ελληνικού Κοινοβουλίου οι γυναίκες αποτελούν μόλις το 13% των συνολικά εκλεγμένων βουλευτών") %>%
    hc_plotOptions(pie = list(
        # key settings to make it a semicircle donut
        startAngle = -90,      # start at left-bottom
        endAngle   = 90,       # end at right-bottom -> forms a half circle
        center     = c("50%", "75%"), # vertically lower so the semi-circle sits nicely
        size       = "110%",   # overall size of the pie
        innerSize  = "60%",    # makes it a donut (adjust for thicker/thinner ring)
        showInLegend = TRUE,
        dataLabels = list(
            enabled = TRUE,
            distance = -30,      # place labels inside the ring; tweak as needed
            style = list(fontSize = "12px"),
            formatter = JS("function() { return '<b>'+ this.point.name +'</b>: '+ this.percentage.toFixed(1) +'%'; }")
        )
    )) %>%
    hc_add_series(
        name = "Share",
        data = list_parse2(gh)
    ) %>%
    hc_colors(colors) %>%
    hc_tooltip(pointFormat = '{series.name}: <b>{point.percentage:.1f}%</b>') %>%
    hc_legend(layout = "horizontal", align = "center", verticalAlign = "bottom")  

Ευχαριστίες - Τελικές σημειώσεις

Εικόνα του/της Leonhard Niederwimmer από την ιστοσελίδα Pixabay

Τα εξορυγμένα δεδομένα που χρησιμοποιώ στο άρθρο παρέχονται και είναι ελεύθερα προσβάσιμα από το σχετικό αποθετήριο μου στο GitHub. Το σύνολο μου και γενικότερα η πρωτότυπη πηγή σύνθεσης των πληροφοριών είναι η ιστοσελίδα του Ελληνικού Κοινοβουλίου

Αναφορές

Grolemund, G., & Wickham, H. (2011). Dates and Times Made Easy with lubridate. Journal of Statistical Software, 40(3), 1–25. Ανακτήθηκε από https://www.jstatsoft.org/v40/i03/
Iannone, R., Cheng, J., Schloerke, B., Haughton, S., Hughes, E., Lauer, A., … Roy, O. (2025). gt: Easily Create Presentation-Ready Display Tables. Ανακτήθηκε από https://gt.rstudio.com
Kunst, J. (2022). highcharter: A Wrapper for the Highcharts Library. Ανακτήθηκε από https://jkunst.com/highcharter/
Müller, K., & Wickham, H. (2026). tibble: Simple Data Frames. Ανακτήθηκε από https://tibble.tidyverse.org/
R Core Team. (2025). R: A Language and Environment for Statistical Computing. Vienna, Austria: R Foundation for Statistical Computing. Ανακτήθηκε από https://www.R-project.org/
Spinu, V., Grolemund, G., & Wickham, H. (2024). lubridate: Make Dealing with Dates a Little Easier. Ανακτήθηκε από https://lubridate.tidyverse.org
Wickham, H. (2016). ggplot2: Elegant Graphics for Data Analysis. Springer-Verlag New York. Ανακτήθηκε από https://ggplot2.tidyverse.org
Wickham, H. (2023). tidyverse: Easily Install and Load the Tidyverse. Ανακτήθηκε από https://tidyverse.tidyverse.org
Wickham, H. (2025a). forcats: Tools for Working with Categorical Variables (Factors). Ανακτήθηκε από https://forcats.tidyverse.org/
Wickham, H. (2025b). stringr: Simple, Consistent Wrappers for Common String Operations. Ανακτήθηκε από https://stringr.tidyverse.org
Wickham, H., Averick, M., Bryan, J., Chang, W., McGowan, L. D., François, R., … Yutani, H. (2019). Welcome to the tidyverse. Journal of Open Source Software, 4(43), 1686. https://doi.org/10.21105/joss.01686
Wickham, H., Chang, W., Henry, L., Pedersen, T. L., Takahashi, K., Wilke, C., … van den Brand, T. (2025). ggplot2: Create Elegant Data Visualisations Using the Grammar of Graphics. Ανακτήθηκε από https://ggplot2.tidyverse.org
Wickham, H., François, R., Henry, L., Müller, K., & Vaughan, D. (2023). dplyr: A Grammar of Data Manipulation. Ανακτήθηκε από https://dplyr.tidyverse.org
Wickham, H., & Henry, L. (2026). purrr: Functional Programming Tools. Ανακτήθηκε από https://purrr.tidyverse.org/
Wickham, H., Hester, J., & Bryan, J. (2025). readr: Read Rectangular Text Data. Ανακτήθηκε από https://readr.tidyverse.org
Wickham, H., Vaughan, D., & Girlich, M. (2025). tidyr: Tidy Messy Data. Ανακτήθηκε από https://tidyr.tidyverse.org

Αναφορά

Αναφορά BibTeX:
@online{2022,
  author = {, stesiam},
  title = {Περιγραφική Ανάλυση Ελληνικού Κοινοβουλίου},
  date = {2022-10-10},
  url = {https://stesiam.com/el/posts/eda-greek-parliament/},
  langid = {el}
}
Για απόδοση ευγνωμοσύνης, παρακαλούμε αναφερθείτε σε αυτό το έργο ως:
stesiam. (2022, October 10). Περιγραφική Ανάλυση Ελληνικού Κοινοβουλίου. Retrieved from https://stesiam.com/el/posts/eda-greek-parliament/