Average Penis and Breast Size

R Code for Plot

# Load some R packages: 
library(rvest)
library(tidyverse)
library(hrbrthemes)
my_font <- "Roboto Condensed"
bkgrnd <- "#1e1e1e"

# Collect data: 

"https://www.worlddata.info/average-breastsize.php" %>% 
  read_html() %>% 
  html_table() %>% 
  .[[1]] -> breast_size



"https://www.worlddata.info/average-penissize.php" %>% 
  read_html() %>% 
  html_table() %>% 
  .[[1]] -> penis_size



# Rename for all columns: 

names(breast_size) <- c("rank", "country", "cup", "volume", "min_vol_quan", "max_vol_quan", "bmi")
names(penis_size) <- c("rank", "country", "penis_length", "body_heifht", "percent_height")

n1 <- nrow(breast_size)
n2 <- nrow(penis_size)

r1 <- floor(n1 / 3)
r2 <- floor(n2 / 3)


breast_size %>% 
  mutate(group = case_when(rank <= r1 ~ "Biggest", 
                           rank > r1 & rank <= 2*r1 ~ "Middle", 
                           TRUE ~ "Smallest")) %>% 
  arrange(volume) %>% 
  mutate(country = factor(country, levels = country)) -> breast_size

colors1 <- c("firebrick", "yellow", "cyan")
colors2 <- c("firebrick", "#cc4125", "#073763")

breast_size %>% 
  ggplot(aes(country, volume, fill = group, color = group)) + 
  geom_col(width = 0.8) + 
  theme_modern_rc() + 
  facet_wrap(~ group, scales = "free_y") + 
  coord_flip() + 
  scale_fill_manual(values = colors2, name = "") + 
  scale_color_manual(values = colors2, name = "") + 
  geom_text(data =  breast_size %>% filter(volume >= 370), aes(label = volume), 
            color = "white", hjust = 1.1, family = my_font, size = 3.5) + 
  geom_text(data =  breast_size %>% filter(volume < 370), aes(label = volume),
            color = "white", hjust = -0.2, family = my_font, size = 3.5) + 
  theme(legend.text = element_text(color = "white")) + 
  theme(legend.position = "top") + 
  theme(axis.text.x = element_blank()) + 
  theme(panel.grid = element_blank()) + 
  theme(legend.text = element_text(size = 11, face = "bold", family = my_font)) + 
  theme(plot.caption = element_text(size = 11, face = "italic")) + 
  theme(plot.subtitle = element_text(size = 13, color = "white")) + 
  theme(plot.title = element_text(size = 22)) + 
  labs(x = NULL, y = NULL, 
       title = "Figure 1: Average Breast Size by Country, 2019", 
       subtitle = "In the evaluations there are no self-assessments, but only results of medical professionals. All subjects were between 28 and\n30 years old and were divided according to their country of birth. All women were in normal health, not pregnant, not lactating,\nhormonally treated and had no breast surgery. The breast size measurement is in cubic centimeter.", 
       caption = "Data Source: https://www.worlddata.info") + 
  theme(axis.text.y = element_text(color = "white", size = 10)) + 
  theme(axis.text.x = element_blank())
  
  

penis_size %>% 
  mutate(penis_length = str_replace_all(penis_length, " cm", "") %>% as.numeric()) %>% 
  mutate(group = case_when(rank <= r2 ~ "Biggest", 
                           rank > r2 & rank <= 2*r2 ~ "Middle", 
                           TRUE ~ "Smallest")) %>% 
  arrange(penis_length) %>% 
  mutate(country = case_when(str_detect(country, "the Congo") ~ "Congo", 
                             str_detect(country, "Central African") ~ "Central African", 
                             TRUE ~ country)) %>% 
  mutate(country = factor(country, levels = country)) -> penis_size 

penis_size %>% 
  mutate(label = as.character(penis_length %>% round(1))) %>% 
  mutate(label = case_when(str_detect(country, "Korea") ~ label, 
                           str_count(label) != 4 ~ paste0(label, ".0"),
                           TRUE ~ label)) -> penis_size



penis_size %>% 
  ggplot(aes(country, penis_length, fill = group, color = group)) + 
  geom_col(width = 0.8) + 
  theme_modern_rc() + 
  facet_wrap(~ group, scales = "free_y") + 
  coord_flip() + 
  scale_fill_manual(values = colors2, name = "") + 
  scale_color_manual(values = colors2, name = "") + 
  geom_text(aes(label = label), color = "white", hjust = 1.1) + 
  theme(legend.text = element_text(color = "white")) + 
  theme(legend.position = "top") + 
  theme(axis.text.x = element_blank()) + 
  theme(panel.grid = element_blank()) + 
  theme(legend.text = element_text(size = 11, face = "bold", family = my_font)) + 
  theme(plot.subtitle = element_text(size = 13, color = "white")) + 
  theme(plot.caption = element_text(size = 11, face = "italic")) + 
  theme(plot.title = element_text(size = 22)) + 
  labs(x = NULL, y = NULL, 
       title = "Figure 2: Average Penis Size by Country, 2019", 
       subtitle = "Basically, the length is always measured on the top of the stem root to the top of the glans. Over all countries the average size of a penis\nis about 14.03 cm. The longest one is 17.93 cm long and carried by men in Congo. Men in South Korea have to get along with only 9.66 cm.", 
       caption = "Data Source: https://www.worlddata.info") + 
  theme(axis.text.y = element_text(color = "white", size = 10)) + 
  theme(axis.text.x = element_blank())
LS0tDQp0aXRsZTogIkF2ZXJhZ2UgUGVuaXMgYW5kIEJyZWFzdCBTaXplIGJ5IENvdW50cnkiDQpzdWJ0aXRsZTogIkRhaWx5IEdyYXBoIFNlcmllcyINCmF1dGhvcjogIk5ndXllbiBDaGkgRHVuZyINCm91dHB1dDoNCiAgaHRtbF9kb2N1bWVudDoNCiAgICBjb2RlX2Rvd25sb2FkOiB5ZXMNCiAgICAjIGNvZGVfZm9sZGluZzogaGlkZQ0KICAgIGhpZ2hsaWdodDogemVuYnVybg0KICAgIHRoZW1lOiBmbGF0bHkNCiAgICB0b2M6IHllcw0KICAgIHRvY19mbG9hdDogeWVzDQogIHdvcmRfZG9jdW1lbnQ6DQogICAgdG9jOiB5ZXMNCi0tLQ0KDQpgYGB7ciBzZXR1cCxpbmNsdWRlPUZBTFNFfQ0Ka25pdHI6Om9wdHNfY2h1bmskc2V0KGVjaG8gPSBUUlVFLCB3YXJuaW5nID0gRkFMU0UsIG1lc3NhZ2UgPSBGQUxTRSwgZmlnLnJldGluYT0yKQ0KYGBgDQoNCg0KIyBBdmVyYWdlIFBlbmlzIGFuZCBCcmVhc3QgU2l6ZQ0KDQohW10oQzpcXFVzZXJzXFxaYm9va1xcRGVza3RvcFxccGljXFxicmVhc3QuanBnKQ0KDQohW10oQzpcXFVzZXJzXFxaYm9va1xcRGVza3RvcFxccGljXFxwZW5pczEuanBnKQ0KDQoNCiMgUiBDb2RlIGZvciBQbG90DQoNCmBgYHtyLCBldmFsPUZBTFNFfQ0KIyBMb2FkIHNvbWUgUiBwYWNrYWdlczogDQpsaWJyYXJ5KHJ2ZXN0KQ0KbGlicmFyeSh0aWR5dmVyc2UpDQpsaWJyYXJ5KGhyYnJ0aGVtZXMpDQpteV9mb250IDwtICJSb2JvdG8gQ29uZGVuc2VkIg0KYmtncm5kIDwtICIjMWUxZTFlIg0KDQojIENvbGxlY3QgZGF0YTogDQoNCiJodHRwczovL3d3dy53b3JsZGRhdGEuaW5mby9hdmVyYWdlLWJyZWFzdHNpemUucGhwIiAlPiUgDQogIHJlYWRfaHRtbCgpICU+JSANCiAgaHRtbF90YWJsZSgpICU+JSANCiAgLltbMV1dIC0+IGJyZWFzdF9zaXplDQoNCg0KDQoiaHR0cHM6Ly93d3cud29ybGRkYXRhLmluZm8vYXZlcmFnZS1wZW5pc3NpemUucGhwIiAlPiUgDQogIHJlYWRfaHRtbCgpICU+JSANCiAgaHRtbF90YWJsZSgpICU+JSANCiAgLltbMV1dIC0+IHBlbmlzX3NpemUNCg0KDQoNCiMgUmVuYW1lIGZvciBhbGwgY29sdW1uczogDQoNCm5hbWVzKGJyZWFzdF9zaXplKSA8LSBjKCJyYW5rIiwgImNvdW50cnkiLCAiY3VwIiwgInZvbHVtZSIsICJtaW5fdm9sX3F1YW4iLCAibWF4X3ZvbF9xdWFuIiwgImJtaSIpDQpuYW1lcyhwZW5pc19zaXplKSA8LSBjKCJyYW5rIiwgImNvdW50cnkiLCAicGVuaXNfbGVuZ3RoIiwgImJvZHlfaGVpZmh0IiwgInBlcmNlbnRfaGVpZ2h0IikNCg0KbjEgPC0gbnJvdyhicmVhc3Rfc2l6ZSkNCm4yIDwtIG5yb3cocGVuaXNfc2l6ZSkNCg0KcjEgPC0gZmxvb3IobjEgLyAzKQ0KcjIgPC0gZmxvb3IobjIgLyAzKQ0KDQoNCmJyZWFzdF9zaXplICU+JSANCiAgbXV0YXRlKGdyb3VwID0gY2FzZV93aGVuKHJhbmsgPD0gcjEgfiAiQmlnZ2VzdCIsIA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgcmFuayA+IHIxICYgcmFuayA8PSAyKnIxIH4gIk1pZGRsZSIsIA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgVFJVRSB+ICJTbWFsbGVzdCIpKSAlPiUgDQogIGFycmFuZ2Uodm9sdW1lKSAlPiUgDQogIG11dGF0ZShjb3VudHJ5ID0gZmFjdG9yKGNvdW50cnksIGxldmVscyA9IGNvdW50cnkpKSAtPiBicmVhc3Rfc2l6ZQ0KDQpjb2xvcnMxIDwtIGMoImZpcmVicmljayIsICJ5ZWxsb3ciLCAiY3lhbiIpDQpjb2xvcnMyIDwtIGMoImZpcmVicmljayIsICIjY2M0MTI1IiwgIiMwNzM3NjMiKQ0KDQpicmVhc3Rfc2l6ZSAlPiUgDQogIGdncGxvdChhZXMoY291bnRyeSwgdm9sdW1lLCBmaWxsID0gZ3JvdXAsIGNvbG9yID0gZ3JvdXApKSArIA0KICBnZW9tX2NvbCh3aWR0aCA9IDAuOCkgKyANCiAgdGhlbWVfbW9kZXJuX3JjKCkgKyANCiAgZmFjZXRfd3JhcCh+IGdyb3VwLCBzY2FsZXMgPSAiZnJlZV95IikgKyANCiAgY29vcmRfZmxpcCgpICsgDQogIHNjYWxlX2ZpbGxfbWFudWFsKHZhbHVlcyA9IGNvbG9yczIsIG5hbWUgPSAiIikgKyANCiAgc2NhbGVfY29sb3JfbWFudWFsKHZhbHVlcyA9IGNvbG9yczIsIG5hbWUgPSAiIikgKyANCiAgZ2VvbV90ZXh0KGRhdGEgPSAgYnJlYXN0X3NpemUgJT4lIGZpbHRlcih2b2x1bWUgPj0gMzcwKSwgYWVzKGxhYmVsID0gdm9sdW1lKSwgDQogICAgICAgICAgICBjb2xvciA9ICJ3aGl0ZSIsIGhqdXN0ID0gMS4xLCBmYW1pbHkgPSBteV9mb250LCBzaXplID0gMy41KSArIA0KICBnZW9tX3RleHQoZGF0YSA9ICBicmVhc3Rfc2l6ZSAlPiUgZmlsdGVyKHZvbHVtZSA8IDM3MCksIGFlcyhsYWJlbCA9IHZvbHVtZSksDQogICAgICAgICAgICBjb2xvciA9ICJ3aGl0ZSIsIGhqdXN0ID0gLTAuMiwgZmFtaWx5ID0gbXlfZm9udCwgc2l6ZSA9IDMuNSkgKyANCiAgdGhlbWUobGVnZW5kLnRleHQgPSBlbGVtZW50X3RleHQoY29sb3IgPSAid2hpdGUiKSkgKyANCiAgdGhlbWUobGVnZW5kLnBvc2l0aW9uID0gInRvcCIpICsgDQogIHRoZW1lKGF4aXMudGV4dC54ID0gZWxlbWVudF9ibGFuaygpKSArIA0KICB0aGVtZShwYW5lbC5ncmlkID0gZWxlbWVudF9ibGFuaygpKSArIA0KICB0aGVtZShsZWdlbmQudGV4dCA9IGVsZW1lbnRfdGV4dChzaXplID0gMTEsIGZhY2UgPSAiYm9sZCIsIGZhbWlseSA9IG15X2ZvbnQpKSArIA0KICB0aGVtZShwbG90LmNhcHRpb24gPSBlbGVtZW50X3RleHQoc2l6ZSA9IDExLCBmYWNlID0gIml0YWxpYyIpKSArIA0KICB0aGVtZShwbG90LnN1YnRpdGxlID0gZWxlbWVudF90ZXh0KHNpemUgPSAxMywgY29sb3IgPSAid2hpdGUiKSkgKyANCiAgdGhlbWUocGxvdC50aXRsZSA9IGVsZW1lbnRfdGV4dChzaXplID0gMjIpKSArIA0KICBsYWJzKHggPSBOVUxMLCB5ID0gTlVMTCwgDQogICAgICAgdGl0bGUgPSAiRmlndXJlIDE6IEF2ZXJhZ2UgQnJlYXN0IFNpemUgYnkgQ291bnRyeSwgMjAxOSIsIA0KICAgICAgIHN1YnRpdGxlID0gIkluIHRoZSBldmFsdWF0aW9ucyB0aGVyZSBhcmUgbm8gc2VsZi1hc3Nlc3NtZW50cywgYnV0IG9ubHkgcmVzdWx0cyBvZiBtZWRpY2FsIHByb2Zlc3Npb25hbHMuIEFsbCBzdWJqZWN0cyB3ZXJlIGJldHdlZW4gMjggYW5kXG4zMCB5ZWFycyBvbGQgYW5kIHdlcmUgZGl2aWRlZCBhY2NvcmRpbmcgdG8gdGhlaXIgY291bnRyeSBvZiBiaXJ0aC4gQWxsIHdvbWVuIHdlcmUgaW4gbm9ybWFsIGhlYWx0aCwgbm90IHByZWduYW50LCBub3QgbGFjdGF0aW5nLFxuaG9ybW9uYWxseSB0cmVhdGVkIGFuZCBoYWQgbm8gYnJlYXN0IHN1cmdlcnkuIFRoZSBicmVhc3Qgc2l6ZSBtZWFzdXJlbWVudCBpcyBpbiBjdWJpYyBjZW50aW1ldGVyLiIsIA0KICAgICAgIGNhcHRpb24gPSAiRGF0YSBTb3VyY2U6IGh0dHBzOi8vd3d3LndvcmxkZGF0YS5pbmZvIikgKyANCiAgdGhlbWUoYXhpcy50ZXh0LnkgPSBlbGVtZW50X3RleHQoY29sb3IgPSAid2hpdGUiLCBzaXplID0gMTApKSArIA0KICB0aGVtZShheGlzLnRleHQueCA9IGVsZW1lbnRfYmxhbmsoKSkNCiAgDQogIA0KDQpwZW5pc19zaXplICU+JSANCiAgbXV0YXRlKHBlbmlzX2xlbmd0aCA9IHN0cl9yZXBsYWNlX2FsbChwZW5pc19sZW5ndGgsICIgY20iLCAiIikgJT4lIGFzLm51bWVyaWMoKSkgJT4lIA0KICBtdXRhdGUoZ3JvdXAgPSBjYXNlX3doZW4ocmFuayA8PSByMiB+ICJCaWdnZXN0IiwgDQogICAgICAgICAgICAgICAgICAgICAgICAgICByYW5rID4gcjIgJiByYW5rIDw9IDIqcjIgfiAiTWlkZGxlIiwgDQogICAgICAgICAgICAgICAgICAgICAgICAgICBUUlVFIH4gIlNtYWxsZXN0IikpICU+JSANCiAgYXJyYW5nZShwZW5pc19sZW5ndGgpICU+JSANCiAgbXV0YXRlKGNvdW50cnkgPSBjYXNlX3doZW4oc3RyX2RldGVjdChjb3VudHJ5LCAidGhlIENvbmdvIikgfiAiQ29uZ28iLCANCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyX2RldGVjdChjb3VudHJ5LCAiQ2VudHJhbCBBZnJpY2FuIikgfiAiQ2VudHJhbCBBZnJpY2FuIiwgDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRSVUUgfiBjb3VudHJ5KSkgJT4lIA0KICBtdXRhdGUoY291bnRyeSA9IGZhY3Rvcihjb3VudHJ5LCBsZXZlbHMgPSBjb3VudHJ5KSkgLT4gcGVuaXNfc2l6ZSANCg0KcGVuaXNfc2l6ZSAlPiUgDQogIG11dGF0ZShsYWJlbCA9IGFzLmNoYXJhY3RlcihwZW5pc19sZW5ndGggJT4lIHJvdW5kKDEpKSkgJT4lIA0KICBtdXRhdGUobGFiZWwgPSBjYXNlX3doZW4oc3RyX2RldGVjdChjb3VudHJ5LCAiS29yZWEiKSB+IGxhYmVsLCANCiAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cl9jb3VudChsYWJlbCkgIT0gNCB+IHBhc3RlMChsYWJlbCwgIi4wIiksDQogICAgICAgICAgICAgICAgICAgICAgICAgICBUUlVFIH4gbGFiZWwpKSAtPiBwZW5pc19zaXplDQoNCg0KDQpwZW5pc19zaXplICU+JSANCiAgZ2dwbG90KGFlcyhjb3VudHJ5LCBwZW5pc19sZW5ndGgsIGZpbGwgPSBncm91cCwgY29sb3IgPSBncm91cCkpICsgDQogIGdlb21fY29sKHdpZHRoID0gMC44KSArIA0KICB0aGVtZV9tb2Rlcm5fcmMoKSArIA0KICBmYWNldF93cmFwKH4gZ3JvdXAsIHNjYWxlcyA9ICJmcmVlX3kiKSArIA0KICBjb29yZF9mbGlwKCkgKyANCiAgc2NhbGVfZmlsbF9tYW51YWwodmFsdWVzID0gY29sb3JzMiwgbmFtZSA9ICIiKSArIA0KICBzY2FsZV9jb2xvcl9tYW51YWwodmFsdWVzID0gY29sb3JzMiwgbmFtZSA9ICIiKSArIA0KICBnZW9tX3RleHQoYWVzKGxhYmVsID0gbGFiZWwpLCBjb2xvciA9ICJ3aGl0ZSIsIGhqdXN0ID0gMS4xKSArIA0KICB0aGVtZShsZWdlbmQudGV4dCA9IGVsZW1lbnRfdGV4dChjb2xvciA9ICJ3aGl0ZSIpKSArIA0KICB0aGVtZShsZWdlbmQucG9zaXRpb24gPSAidG9wIikgKyANCiAgdGhlbWUoYXhpcy50ZXh0LnggPSBlbGVtZW50X2JsYW5rKCkpICsgDQogIHRoZW1lKHBhbmVsLmdyaWQgPSBlbGVtZW50X2JsYW5rKCkpICsgDQogIHRoZW1lKGxlZ2VuZC50ZXh0ID0gZWxlbWVudF90ZXh0KHNpemUgPSAxMSwgZmFjZSA9ICJib2xkIiwgZmFtaWx5ID0gbXlfZm9udCkpICsgDQogIHRoZW1lKHBsb3Quc3VidGl0bGUgPSBlbGVtZW50X3RleHQoc2l6ZSA9IDEzLCBjb2xvciA9ICJ3aGl0ZSIpKSArIA0KICB0aGVtZShwbG90LmNhcHRpb24gPSBlbGVtZW50X3RleHQoc2l6ZSA9IDExLCBmYWNlID0gIml0YWxpYyIpKSArIA0KICB0aGVtZShwbG90LnRpdGxlID0gZWxlbWVudF90ZXh0KHNpemUgPSAyMikpICsgDQogIGxhYnMoeCA9IE5VTEwsIHkgPSBOVUxMLCANCiAgICAgICB0aXRsZSA9ICJGaWd1cmUgMjogQXZlcmFnZSBQZW5pcyBTaXplIGJ5IENvdW50cnksIDIwMTkiLCANCiAgICAgICBzdWJ0aXRsZSA9ICJCYXNpY2FsbHksIHRoZSBsZW5ndGggaXMgYWx3YXlzIG1lYXN1cmVkIG9uIHRoZSB0b3Agb2YgdGhlIHN0ZW0gcm9vdCB0byB0aGUgdG9wIG9mIHRoZSBnbGFucy4gT3ZlciBhbGwgY291bnRyaWVzIHRoZSBhdmVyYWdlIHNpemUgb2YgYSBwZW5pc1xuaXMgYWJvdXQgMTQuMDMgY20uIFRoZSBsb25nZXN0IG9uZSBpcyAxNy45MyBjbSBsb25nIGFuZCBjYXJyaWVkIGJ5IG1lbiBpbiBDb25nby4gTWVuIGluIFNvdXRoIEtvcmVhIGhhdmUgdG8gZ2V0IGFsb25nIHdpdGggb25seSA5LjY2IGNtLiIsIA0KICAgICAgIGNhcHRpb24gPSAiRGF0YSBTb3VyY2U6IGh0dHBzOi8vd3d3LndvcmxkZGF0YS5pbmZvIikgKyANCiAgdGhlbWUoYXhpcy50ZXh0LnkgPSBlbGVtZW50X3RleHQoY29sb3IgPSAid2hpdGUiLCBzaXplID0gMTApKSArIA0KICB0aGVtZShheGlzLnRleHQueCA9IGVsZW1lbnRfYmxhbmsoKSkNCg0KDQpgYGANCg0K