Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
robertopucp
GitHub Repository: robertopucp/1eco35_2022_2
Path: blob/main/Lab10/script_plots_r.R
2714 views
1
################ Clase 10 gráficos (World Bank) ############################
2
## Curso: Laboratorio de R y Python ###########################
3
## @author: Roberto Mendoza
4
5
# clear environment
6
7
rm(list=ls(all=TRUE))
8
9
10
# usamos librarian para cargar librerias, y si no estan instalados, la liberia lo hara por nosotros
11
12
13
# Si no tienen librarian solo deben instalarlo
14
15
#install.packages("librarian")
16
17
librarian::shelf(
18
tidyverse
19
, WDI
20
, forcats
21
, writexl
22
23
)
24
25
# Set directorio ----
26
27
user <- Sys.getenv("USERNAME") # username
28
29
setwd( paste0("C:/Users/",user,"/Documents/GitHub/1ECO35_2022_2/Lab10") ) # set directorio
30
31
32
help(WDI)
33
34
data <- WDI(indicator = "NY.GDP.PCAP.KD", start = 2018, end = 2018)
35
36
# extraemos la información del GDP para el 2018
37
38
country_code <- as_tibble(WDI_data$country)
39
40
# WDI_data$country : extraemos información a nivel país
41
42
# filtro de la base de datos
43
44
data_plot <- data |>
45
rename(GDP = NY.GDP.PCAP.KD) |> # usando merge de la libreria dpplyr (inner merge)
46
inner_join(country_code, by = "iso2c") |> # key word: iso2c código del país
47
filter(region != "Aggregates") |> # nos quedamos solo con países
48
top_n(-30, GDP) |> # se extrae 30 paises con los menores niveles de GDP
49
mutate(country = fct_reorder(country.x, GDP)) # ordenando country a partir de GDP (orden ascendente)
50
51
# Esto para ordenar las barras de manera ascendente
52
53
54
# writexl::write_xlsx(data_plot, "wb_countries.xlsx")
55
56
57
attributes(data_plot) # conociento los atributos de una base de datos. En general de cualquier objeto en R.
58
59
# Plot
60
61
data_plot |> ggplot() +
62
aes(x = country, y = GDP, fill = region) + # se agrupará por región (color)
63
geom_bar(stat = "identity", alpha = .6, width = .5) + # with: ancho de barra, alpha: transparencia de gráfico
64
geom_text(
65
aes(label = format(round(GDP, 1), nsmall = 1)), # nsmall: cantidad de decimales
66
hjust = - 0.35,
67
size = 3 # tamaño
68
) +
69
coord_flip(ylim = c(0, 2000)) + #coord_flip: El eje x es ahora el eje Y. Luego se define el rango del eje y
70
geom_hline(yintercept = 0, alpha = 0.5) + # añadimos un intercepto vertical
71
xlab("") + # retiramos el label country
72
ylab("GDP per capita (constant 2000 US$) in 2020") +
73
theme_classic() + # fondo de blanco
74
scale_fill_brewer(palette = "Set2", name = "Region") + # Set2 paleta de colores
75
theme(
76
axis.line.y = element_blank(), # retira la recta vertical del eje
77
axis.ticks.y = element_blank(), # se retira las lineas punteadas del eje vertical
78
legend.text = element_text(size = 8),
79
axis.title.x = element_text(size = 10) # cambiamos el tamaño del titulo en el eje horizontal
80
)
81
82
83
# Ejemplo 2: scater plot
84
85
librarian::shelf(
86
ggrepel
87
, scales
88
)
89
90
91
data <- WDI(indicator = "NY.GDP.PCAP.KD", start = 1980, end = 2020)
92
93
# trabajamos la base de datos
94
95
data_plot <- data %>%
96
rename(GDP = NY.GDP.PCAP.KD) %>%
97
inner_join(country_code, by = "country") %>%
98
filter(year %in% c(1980, 2020), region != "NA") %>%
99
group_by(iso3c.x) %>%
100
pivot_wider(names_from = "year", values_from = "GDP") %>% # long to wide
101
ungroup() |> # se desactiva el agrupamiento
102
rename (pc_gdp_1980 = `1980`, pc_gdp_2020 = `2020`) |>
103
mutate(pc_gdp_2020 = pc_gdp_2020/1000, pc_gdp_1980 = pc_gdp_1980/1000)
104
105
106
country_stress <- c("USA","CHN","BRA") # lables (etiquetas)
107
108
# graficos
109
110
ggplot(data_plot , aes(x = pc_gdp_1980, y = pc_gdp_2020)) +
111
geom_point(aes(alpha = 0.8, color = (iso3c.x %in% country_stress)), show.legend = FALSE) +
112
geom_abline(slope = 1, color = "gray") +
113
geom_text_repel(aes(label = ifelse(iso3c.x %in% country_stress, iso3c.x, ""))) +
114
scale_y_continuous(
115
limits = c(0, 100),
116
breaks = c(0, 25,50, 75,100),
117
labels = expression(0, 25,50,75, 100)
118
) +
119
scale_x_continuous(
120
limits = c(0, 100),
121
breaks = c(0, 25,50,75, 100),
122
labels = expression(0, 25,50,75, 100)
123
124
scale_color_manual(values = c("gray", "red")) + ) +
125
xlab("GDP per capita (constante 2000 miles-US$) 1980") +
126
ylab("GDP per capita (cosntante R milesUS$) 2020") +
127
theme_classic() +
128
theme(
129
axis.text = element_text(size = 12),
130
axis.title = element_text(size = 10)
131
)
132
133
134
135
136
ggsave("../plots/scatter.png"
137
, height = 8 # alto
138
, width = 12 # ancho
139
, dpi = 320 # resolución (calidad de la imagen)
140
)
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165