• tal@lemmy.today
    link
    fedilink
    English
    arrow-up
    34
    ·
    edit-2
    11 months ago

    statistia-netcontrib.csv

    country,netcontrib
    DE,25572
    FR,12380
    NL,6929
    IT,3337
    SE,2826
    DK,1766
    AT,1540
    FI,1109
    IE,703
    MT,-14
    CY,-172
    SI,-386
    EE,-729
    LT,-860
    SK,-1398
    LV,-1544
    BG,-1727
    HR,-1746
    ES,-1946
    LU,-2020
    CZ,-2853
    BE,-2950
    PT,-3132
    RO,-4096
    HU,-4206
    GR,-4278
    PL,-11910
    

    eu-contribution-per-capita.r

    if (!require("pacman")) install.packages("pacman")
    pacman::p_load(
                countrycode,
                dplyr,
                ggdark,
                ggplot2,
                r2country
            )
    
    abs <- read.csv("statista-netcontrib.csv",header = TRUE)
    abs2 <- cbind(abs,name = countrycode(abs$country,"iso2c","country.name")) 
    
    df <- inner_join(country_names, abs2)
    df2 <- inner_join(country_population, df)
    df2$percap <- df2$netcontrib/df2$population2023*1000000
    
    df3 <- arrange(df2,percap)
    
    ggplot(df3, aes(x = percap, y = reorder(name, percap))) +
        geom_bar(stat = "identity") +
        dark_theme_gray() +
        ylab("Country") +
        xlab("Euros per capita") +
        scale_x_continuous(breaks = scales::pretty_breaks(n = 20)) +
        geom_text(aes(label = percap))
    
    ggsave("euros-percap.png")
    

    Full size image

    Sorry about the broken escaping of the angle brackets (“<” is “&lt;”) in the source; Lemmy is, regrettably, broken on that at the moment.

    EDIT: Fixed Latvia country code error.

    EDIT2: And Austria country code error.

    • tal@lemmy.today
      link
      fedilink
      English
      arrow-up
      14
      ·
      edit-2
      11 months ago

      Also, a Markdown table rendition:

      eu-contribution-per-capita-markdown.r

      if (!require("pacman")) install.packages("pacman")
      pacman::p_load(
                  countrycode,
                  dplyr,
                  r2country,
                  simplermarkdown
              )
      
      abs &lt;- read.csv("statista-netcontrib.csv",header = TRUE)
      abs2 &lt;- cbind(abs,name = countrycode(abs$country,"iso2c","country.name")) 
      
      df &lt;- inner_join(country_names, abs2)
      df2 &lt;- inner_join(country_population, df)
      df2$percap &lt;- df2$netcontrib/df2$population2023*1000000
      
      df3 &lt;- arrange(df2,-percap)
      
      md_table(df3)
      

      name percap
      Netherlands 386.91124
      Germany 302.86855
      Denmark 297.09908
      Sweden 267.98643
      Finland 199.90810
      France 181.71677
      Austria 168.68113
      Ireland 136.52768
      Italy 56.76638
      Malta -26.94577
      Spain -40.25217
      Slovenia -182.27546
      Cyprus -187.34343
      Romania -214.99549
      Belgium -250.73894
      Slovakia -257.60767
      Bulgaria -267.84703
      Portugal -299.21568
      Lithuania -300.05251
      Poland -315.86485
      Greece -408.10926
      Hungary -438.25808
      Croatia -449.01298
      Estonia -533.72029
      Latvia -819.79399
      Luxembourg -3056.85909
      • Whelks_chance@lemmy.world
        link
        fedilink
        English
        arrow-up
        4
        ·
        11 months ago

        This is very clever. Is Lemmy actually running the code to achieve this, or did you paste it just so other people can replicate the process?

    • interolivary@beehaw.org
      link
      fedilink
      English
      arrow-up
      12
      ·
      edit-2
      11 months ago

      statistia-netcontrib.csv is using some weird country code that isn’t ISO 3166-2, because it’s got what I assume to be Latvia with the code LA which is actually Laos, and that’s reflected on your chart too – I was initially a bit puzzled as to why Laos was listed as being in the EU. At a quick glance it seems to be the only weird one though

      • tal@lemmy.today
        link
        fedilink
        English
        arrow-up
        7
        ·
        edit-2
        11 months ago

        That’s just me not knowing my country codes. Over here, “LA” is generally Los Angeles. I’ll fix it; thanks.

        EDIT: Also, Austria appears to be “AT” rather than “AU”. One more fix.

        • interolivary@beehaw.org
          link
          fedilink
          English
          arrow-up
          1
          ·
          11 months ago

          Ah I thought you pulled that from some Eurostat database and they were using wonky country codes. The AU / AT mixup is a classic one, and since the spelling of Austria and Australia is so close it’s easy to miss that mistake – just like I did