• tal@lemmy.today
      link
      fedilink
      English
      arrow-up
      35
      ·
      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
        13
        ·
        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