if (!require('lubridate')) install.packages('lubridate');
library(lubridate)
path = 'estat_sdg_02_10_en.CSV'
df_obesity<- read.csv(path, row.names=NULL)
summary(df_obesity)
DATAFLOW LAST.UPDATE freq unit bmi geo TIME_PERIOD OBS_VALUE
Length:468 Length:468 Length:468 Length:468 Length:468 Length:468 Min. :2008 Min. : 5.90
Class :character Class :character Class :character Class :character Class :character Class :character 1st Qu.:2014 1st Qu.:19.23
Mode :character Mode :character Mode :character Mode :character Mode :character Mode :character Median :2017 Median :36.50
Mean :2017 Mean :35.87
3rd Qu.:2019 3rd Qu.:50.38
Max. :2022 Max. :64.80
NA's :6
OBS_FLAG
Length:468
Class :character
Mode :character
df_obesity$bmi_fact <- as.factor(df_obesity$bmi)
# Crear el gráfico y asignarlo a 'P1'
P1 <- ggplot(df_obesity, aes(x = bmi_fact, y = OBS_VALUE, fill = bmi)) +
geom_flat_violin(position = position_nudge(x = .25, y = 0), adjust = 2) +
geom_point(position = position_jitter(width = .15), size = .25) +
geom_boxplot(aes(x = as.numeric(bmi_fact) + 0.25, y = OBS_VALUE),
outlier.shape = NA, alpha = 0.3, width = .1, colour = "black") +
ylab('OBS_VALUE') + xlab('bmi') +
coord_flip() + theme_cowplot() +
guides(fill = FALSE, colour = FALSE) +
ggtitle("Raincloud Plot obesity")
# Mostrar el gráfico
P1

LS0tDQp0aXRsZTogIlBFQyAyIFJhaW5jbG91ZCBQbG90Ig0Kb3V0cHV0OiBodG1sX25vdGVib29rDQotLS0NCg0KYGBge3IgZWNobz1UUlVFLCBtZXNzYWdlPUZBTFNFLCB3YXJuaW5nPUZBTFNFfQ0KaWYgKCFyZXF1aXJlKCdsdWJyaWRhdGUnKSkgaW5zdGFsbC5wYWNrYWdlcygnbHVicmlkYXRlJyk7DQpsaWJyYXJ5KGx1YnJpZGF0ZSkNCg0KcGF0aCA9ICdlc3RhdF9zZGdfMDJfMTBfZW4uQ1NWJw0KZGZfb2Jlc2l0eTwtIHJlYWQuY3N2KHBhdGgsIHJvdy5uYW1lcz1OVUxMKQ0KYGBgDQoNCmBgYHtyIHBhY2thZ2Ugc2V0dXAsIGluY2x1ZGUgPSBUUlVFLCBlY2hvID0gRkFMU0V9DQpwYWNrYWdlcyA8LSBjKCJnZ3Bsb3QyIiwgImRwbHlyIiwgImxhdmFhbiIsICJwbHlyIiwgImNvd3Bsb3QiLCAicm1hcmtkb3duIiwgDQogICAgICAgICAgICAgICJyZWFkciIsICJjYVRvb2xzIiwgImJpdG9wcyIpDQoNCmlmIChsZW5ndGgoc2V0ZGlmZihwYWNrYWdlcywgcm93bmFtZXMoaW5zdGFsbGVkLnBhY2thZ2VzKCkpKSkgPiAwKSB7DQogIGluc3RhbGwucGFja2FnZXMoc2V0ZGlmZihwYWNrYWdlcywgcm93bmFtZXMoaW5zdGFsbGVkLnBhY2thZ2VzKCkpKSkgIA0KfQ0KYGBgDQoNCmBgYHtyIHNldHVwX3JhaW5jbG91ZCwgaW5jbHVkZSA9IFRSVUUsIGVjaG8gPSBGQUxTRX0NCmxpYnJhcnkoY293cGxvdCkNCmxpYnJhcnkoZHBseXIpDQpsaWJyYXJ5KHJlYWRyKQ0KbGlicmFyeShmb3JjYXRzKQ0KDQpzb3VyY2UoJ1JfcmFpbmNsb3Vkcy5SJykNCnNvdXJjZSgnc3VtbWFyeVNFLlInKQ0Kc291cmNlKCdzaW11bGF0ZURhdGEuUicpDQpgYGANCg0KYGBge3J9DQpzdW1tYXJ5KGRmX29iZXNpdHkpDQpkZl9vYmVzaXR5JGJtaV9mYWN0IDwtIGFzLmZhY3RvcihkZl9vYmVzaXR5JGJtaSkNCmBgYA0KDQpgYGB7cn0NCiMgQ3JlYXIgZWwgZ3LDoWZpY28geSBhc2lnbmFybG8gYSAnUDEnDQpQMSA8LSBnZ3Bsb3QoZGZfb2Jlc2l0eSwgYWVzKHggPSBibWlfZmFjdCwgeSA9IE9CU19WQUxVRSwgZmlsbCA9IGJtaSkpICsNCiAgZ2VvbV9mbGF0X3Zpb2xpbihwb3NpdGlvbiA9IHBvc2l0aW9uX251ZGdlKHggPSAuMjUsIHkgPSAwKSwgYWRqdXN0ID0gMikgKw0KICBnZW9tX3BvaW50KHBvc2l0aW9uID0gcG9zaXRpb25faml0dGVyKHdpZHRoID0gLjE1KSwgc2l6ZSA9IC4yNSkgKw0KDQogIGdlb21fYm94cGxvdChhZXMoeCA9IGFzLm51bWVyaWMoYm1pX2ZhY3QpICsgMC4yNSwgeSA9IE9CU19WQUxVRSksIA0KICAgICAgICAgICAgICAgb3V0bGllci5zaGFwZSA9IE5BLCBhbHBoYSA9IDAuMywgd2lkdGggPSAuMSwgY29sb3VyID0gImJsYWNrIikgKw0KICANCiAgeWxhYignT0JTX1ZBTFVFJykgKyB4bGFiKCdibWknKSArDQogIGNvb3JkX2ZsaXAoKSArIHRoZW1lX2Nvd3Bsb3QoKSArDQogIGd1aWRlcyhmaWxsID0gRkFMU0UsIGNvbG91ciA9IEZBTFNFKSArDQogIGdndGl0bGUoIlJhaW5jbG91ZCBQbG90IG9iZXNpdHkiKQ0KDQojIE1vc3RyYXIgZWwgZ3LDoWZpY28NClAxDQoNCmBgYA0K