Temas a evaluar:
Elabore una gráfica de líneas, de puntos y de barras con los siguientes datos:
apple.xlsx replique la siguiente gráfica.Cargar todas las librerías que utilicé para estos ejercicios
#Cargar librerías
library(pacman)
library(tidyverse)
library(leaflet)
library(htmlwidgets)
library(webshot)
library(sf)
library(readr)
library(stringr)
library(readxl)
library(units)
library(wesanderson)
library(plotly)
library(rebus)
library(scales)
Descargar la base de datos contenida en nuestro proyecto
apple <- read_excel("01_Datos/datos_graficas/data_apple.xlsx") #Bajar base de datos subida previamente en el proyecto
Crear el código en ggplot
apple %>%
ggplot(aes()) + #creamos los geom line necesarios con las tres variables
geom_line(aes(x=date,
y=adjusted),
size = 1,
colour = "black")+
geom_line(aes(x=date,
y=mavg_short),
size = 1,
colour = "blue",
lty =5) +
geom_line(aes(x=date,
y=mavg_long),
size = 1,
colour = "red",
lty =3) +
labs(title = "Precio ajustado de las acciones de Apple", # Título
subtitle = "Fecha: 8 de Sept. 2020 al 4 de Marzo, 2021", # Subtitulo
caption = "Fuente: Librería tidyquant. Matt Dancho, 2020. Extraído del API del S&P500" # Pie de pagina
) +
# Modificar el tema de la gráfica, cambiando los ejes x e y
labs(x = "Fecha" , y = "Precio ajustado")
faculty.csv, grafique lo siguienteDescargar la base de datos contenida en nuestro proyecto y crearemos la gráfica
# Ingrese su código aquí
salario <- read_csv("01_Datos/datos_graficas/faculty-data.csv")
#Creo dos objetos con los distitnos nombres en español e inglés para después reemplazar todo con str_replace
inglés <- c("biology", "english", "informatics", "sociology", "statistics")
español <- c("Biología", "Inglés", "Informática", "Sociología", "Estadística")
salario %>%
mutate(department = str_replace(español, inglés, department)) %>%
arrange(department) %>%
ggplot(aes(x= experience, #Creamos la gráfica con las dos variables
y= salary,
color = department)) +
geom_point() +
geom_smooth(method = "lm") +
facet_wrap(~department, ncol = 3) + #Hacemos los facet dividido en tres columnas para que se parezca a la imagen
theme_bw() + #Añadimos el tema principal (para quitar el fondo)
labs(title = "Experiencia vs. Salario", # Título de la gráfica
caption = "Datos obtenidos de 'cierta' universidad de Estados Unidos, 2020.") + # Pie de pagina
theme(plot.title = element_text(face= "bold", hjust = 1), #título a la derecha y en negritas
legend.position = "bottom", #Leyenda al fondo
legend.background = element_rect(fill = "white", colour = "white"),
panel.grid.major = element_line(colour = "gray93", size = .8), #Cambié las características de las líneas para que se parecieran un poco más al de la imagen
panel.grid.minor = element_line(colour = "gray94")) +
labs(x = "Años de experiencia" , y = "Salario (USD)") + #El título se va a la izquierda y en negritas y bajamos la leyenda
labs(color="Departamento") + #Cambiamos el resto de las etiquetas
scale_y_continuous(labels=scales::dollar_format()) + scale_x_continuous(breaks = breaks_extended(9)) #Añadimos dólares el en eje y t separaciones distintas en el eje x
anuario_chapingo.xlsx, grafique la siguiente gráfica. (Es necesario pre-procesar los datos).Descargar la base de datos del proyecto y crearemos la gráfica.
# Ingrese su código aquí
Chapingo <- read_csv("01_Datos/datos_graficas/anuario_chapingo_2018.csv") #bajar base de datos
Creamos la gráfica de barras
Chapingo %>%
group_by(estado_de_nacimiento) %>% #se hace la suma de los estudiantes por estado para crear la gráfica
summarise(estudiantes_estado = sum(num_alumnos)) %>%
ungroup() %>%
mutate(estado_de_nacimiento = str_to_title(estado_de_nacimiento)) %>% #Es importante hace run str_to_title para que las letras sean mayúsculas y minúsculas
ggplot(aes(x= estudiantes_estado,
y= fct_reorder(estado_de_nacimiento, estudiantes_estado),
fill = estudiantes_estado)) +
geom_col() + geom_text(aes(label = estudiantes_estado),
position = position_stack(), hjust = -0.3) +
labs(title = "Universidad Autónoma Chapingo",
subtitle = "Alumnos registrados de grado 1 a 8. 2018 \npor entidad federativa de nacimiento",
caption="Fuente: Anuario estadístico Champingo, 2018") +
labs(x = "" , y = "") + #Creamos título, subtítulo y quitamos etiquetas. \n nos sirve para bajar el texto del título
theme(legend.position = "none") + #quitamos la leyenda
scale_x_continuous(limits = c(0,2200)) #cambamos la escala para que entre la cifra y no se corte
En la siguiente página: https://trends.google.com.mx/trends/?geo=MX usted puede ver las tendencias de búsquedas de Google en México realizadas sobre algún tema en particular.
Para el presente ejercicio, haga lo siguiente:
Consulte la información de búsquedas sobre la Ley Seca para el último año ( o cualquier otro tema que le resulte más interesante).
Descarge la información por región (entidades) y guardela en su carpeta de 01_Datos.
trends.###Bajamos la base de datos
trends <- read_csv("01_Datos/google trends/susana_distancia.csv",
skip = 2) %>%
rename(Tendencia = `susana distancia: (21/3/20 - 21/3/21)`) %>%
rename(ENTIDAD = Region) #Bajamos base de datos y renombramos las columnas
geometria_entidades <- read_sf("01_Datos/edos/entidades.geojson") %>%
st_transform(crs = 4326) %>%
select(-c(COV_, COV_ID, AREA, PERIMETER, CAPITAL)) #homogeneizamos el sistema 4326 y quitamos columnas
plot(geometria_entidades, max.plot = 1) #Ya podemos ver un mapa preelimilar
Funciones para checar cómo estan escritos los nombres
geometria_entidades$ENTIDAD
## [1] "Aguascalientes" "Baja California"
## [3] "Baja California Sur" "Campeche"
## [5] "Coahuila de Zaragoza" "Colima"
## [7] "Chiapas" "Chihuahua"
## [9] "Ciudad de México" "Durango"
## [11] "Guanajuato" "Guerrero"
## [13] "Hidalgo" "Jalisco"
## [15] "México" "Michoacan de Ocampo"
## [17] "Morelos" "Nayarit"
## [19] "Nuevo León" "Oaxaca"
## [21] "Puebla" "Querétaro de Arteaga"
## [23] "Quintana Roo" "San Luís Potosi"
## [25] "Sinaloa" "Sonora"
## [27] "Tabasco" "Tamaulipas"
## [29] "Tlaxcala" "Veracruz de Ignacio de La Llave"
## [31] "Yucatán" "Zacatecas"
sort(trends$ENTIDAD)
## [1] "Aguascalientes" "Baja California" "Baja California Sur"
## [4] "Campeche" "Chiapas" "Chihuahua"
## [7] "Ciudad de México" "Coahuila de Zaragoza" "Colima"
## [10] "Durango" "Estado de México" "Guanajuato"
## [13] "Guerrero" "Hidalgo" "Jalisco"
## [16] "Michoacán" "Morelos" "Nayarit"
## [19] "Nuevo León" "Oaxaca" "Puebla"
## [22] "Querétaro" "Quintana Roo" "San Luis Potosí"
## [25] "Sinaloa" "Sonora" "Tabasco"
## [28] "Tamaulipas" "Tlaxcala" "Veracruz"
## [31] "Yucatán" "Zacatecas"
cbind.data.frame(geometria_entidades$ENTIDAD, sort(trends$ENTIDAD))
## geometria_entidades$ENTIDAD sort(trends$ENTIDAD)
## 1 Aguascalientes Aguascalientes
## 2 Baja California Baja California
## 3 Baja California Sur Baja California Sur
## 4 Campeche Campeche
## 5 Coahuila de Zaragoza Chiapas
## 6 Colima Chihuahua
## 7 Chiapas Ciudad de México
## 8 Chihuahua Coahuila de Zaragoza
## 9 Ciudad de México Colima
## 10 Durango Durango
## 11 Guanajuato Estado de México
## 12 Guerrero Guanajuato
## 13 Hidalgo Guerrero
## 14 Jalisco Hidalgo
## 15 México Jalisco
## 16 Michoacan de Ocampo Michoacán
## 17 Morelos Morelos
## 18 Nayarit Nayarit
## 19 Nuevo León Nuevo León
## 20 Oaxaca Oaxaca
## 21 Puebla Puebla
## 22 Querétaro de Arteaga Querétaro
## 23 Quintana Roo Quintana Roo
## 24 San Luís Potosi San Luis Potosí
## 25 Sinaloa Sinaloa
## 26 Sonora Sonora
## 27 Tabasco Tabasco
## 28 Tamaulipas Tamaulipas
## 29 Tlaxcala Tlaxcala
## 30 Veracruz de Ignacio de La Llave Veracruz
## 31 Yucatán Yucatán
## 32 Zacatecas Zacatecas
trends <- trends %>%
mutate(ENTIDAD = str_replace_all(ENTIDAD, c("Michoacán" = "Michoacan de Ocampo",
"Estado de México" = "México",
"San Luis Potosí" = "San Luís Potosi",
"Veracruz" = "Veracruz de Ignacio de La Llave",
"Querétaro" = "Querétaro de Arteaga"))) #Cambiamos los valores para que coincidan con los nombres comunes de los estados
Hacer un merge con la llave “ENTIDAD”
merge(geometria_entidades, trends, by = "ENTIDAD")
## Simple feature collection with 32 features and 3 fields
## geometry type: POLYGON
## dimension: XY
## bbox: xmin: -117.1264 ymin: 14.53401 xmax: -86.74038 ymax: 32.71877
## geographic CRS: WGS 84
## First 10 features:
## ENTIDAD CVE_EDO Tendencia geometry
## 1 Aguascalientes 01 77 POLYGON ((-102.0004 22.2332...
## 2 Baja California 02 68 POLYGON ((-114.7575 32.7162...
## 3 Baja California Sur 03 79 POLYGON ((-112.7655 28.0007...
## 4 Campeche 04 38 POLYGON ((-90.45313 20.7065...
## 5 Chiapas 07 63 POLYGON ((-93.23986 17.9497...
## 6 Chihuahua 08 63 POLYGON ((-107.2539 31.7856...
## 7 Ciudad de México 09 100 POLYGON ((-99.27946 19.1311...
## 8 Coahuila de Zaragoza 05 50 POLYGON ((-102.3296 29.8639...
## 9 Colima 06 78 POLYGON ((-104.617 19.15396...
## 10 Durango 10 71 POLYGON ((-106.2219 26.6366...
map = left_join(geometria_entidades, trends) #Hacemos el merge que logrará que todo lo de Entidad coincida con el mapa de trends
plot(map, max.plot = 1)
Crear mapa en ggplot2
library(viridis)
map %>% # Hacemos el mapa
ggplot(aes(fill = Tendencia)) +
geom_sf(color = "gray") +
labs(title = "Mapa de la tendencia de Susana Distancia", #Título
subtitle = "Búsquedas correspondientes al año pasado", #Subtítulo
caption = "Fuente: Google Trends", #Pie
fill = "Métrica de tendencias de Google") + #Leyenda
theme_bw() +
scale_fill_gradientn(colors = magma(begin = 0,
end = 1,
n = 10)) +
guides(fill = guide_colorbar(title.position = "top", title.hjust = 0.5)) +
theme(plot.title = element_text(hjust = 0.5,
color = "gray10",
face = "bold"),
plot.subtitle = element_text(hjust = 0.5,
color = "gray50",
face = "bold"),
plot.caption = element_text(hjust = 1),
axis.text = element_blank(),
axis.ticks = element_blank(),
panel.background = element_blank(),
legend.position = "bottom")
Lo haremos interactivo, guardándolo en un objeto llamado plt
#El mapa requiere ser trabajado para enviarlo a ggplotly
plt = map %>%
ggplot(aes(fill = Tendencia)) +
geom_sf(color = "gray") +
labs(title = "Mapa de la tendencia de Susana Distancia",
subtitle = "Búsquedas correspondientes al año pasado",
caption = "Fuente: Google Trends",
fill = "Tendencia") +
theme_bw() +
scale_fill_gradientn(colors = magma(begin = 0,
end = 1,
n = 10)) +
guides(fill = guide_colorbar(title.position = "top", title.hjust = 0.5)) +
theme(plot.title = element_text(hjust = 0.5,
color = "gray10",
face = "bold"),
plot.subtitle = element_text(hjust = 0.5,
color = "gray50",
face = "bold"),
plot.caption = element_text(hjust = 1),
axis.text = element_blank(),
axis.ticks = element_blank(),
panel.background = element_blank(),
legend.position = "bottom")
Lo convertimos a ggplotly
ggplotly(plt)
mapa_interactivo = ggplotly(plt)
library(htmlwidgets)
saveWidget(mapa_interactivo, "mapasusanadistancia.html") #Generamos el mapa interactivo
¿Qué es el DENUE del INEGI? El Directorio Estadístico Nacional de Unidades Económicas (DENUE) que ofrece datos de identificación, ubicación, actividad económica y tamaño de más de 5 millones de unidades económicas activas en México. Puede ser consultado en https://www.inegi.org.mx/app/mapa/denue/default.aspx
Lea el archivo 01_Datos/tacos_cdmx/tacos_tortas_cdmx.shp el cual contiene los puntos latitud/longitud de las ubicaciones de los negocios con el tipo de actividad “Restaurantes con servicio de preparación de tacos y tortas”. Guarde esta información en un objeto llamado tacos_tortas.
tacos_tortas <- read_sf("01_Datos/tacos_cdmx/tacos_tortas_cdmx.shp") #Descargamos la base de datos
print(tacos_tortas, n=10)
## Simple feature collection with 10954 features and 27 fields
## geometry type: POINT
## dimension: XY
## bbox: xmin: -124.4455 ymin: 10.25839 xmax: -98.953 ymax: 19.57733
## CRS: NA
## # A tibble: 10,954 x 28
## nom_estab codigo_act nombre_act per_ocu tipo_v_e_1 tipo_v_e_2 tipo_v_e_3
## <chr> <dbl> <chr> <chr> <chr> <chr> <chr>
## 1 100% CARNI~ 722514 Restaurantes~ 0 a 5 ~ CALLE CALZADA CALLE
## 2 153 TORTAS~ 722514 Restaurantes~ 0 a 5 ~ CALLE CALLE CALLE
## 3 37 50 FUEN~ 722514 Restaurantes~ 0 a 5 ~ CALLE CALLE CALLE
## 4 60 FUENTE ~ 722514 Restaurantes~ 0 a 5 ~ EJE VIAL AVENIDA PRIVADA
## 5 621 TAQUER~ 722514 Restaurantes~ 6 a 10~ CALLE VIADUCTO VIADUCTO
## 6 68 69 TAQU~ 722514 Restaurantes~ 0 a 5 ~ CALLE CALLE CALLE
## 7 72 TAQUERI~ 722514 Restaurantes~ 0 a 5 ~ CALLE CALLE CALLE
## 8 A BUENA HO~ 722514 Restaurantes~ 0 a 5 ~ CALLE CALLE CALZADA
## 9 A LA PARIL~ 722514 Restaurantes~ 0 a 5 ~ AVENIDA CALLE CALLE
## 10 A TAKEAR 722514 Restaurantes~ 6 a 10~ AVENIDA CIRCUITO CALLE
## # ... with 10,944 more rows, and 21 more variables: numero_ext <dbl>,
## # letra_ext <chr>, edificio <chr>, edificio_e <chr>, numero_int <dbl>,
## # letra_int <chr>, tipo_asent <chr>, nomb_asent <chr>, nom_CenCom <chr>,
## # num_local <chr>, cod_postal <dbl>, cve_ent <chr>, entidad <chr>,
## # cve_mun <chr>, nom_mun <chr>, cve_loc <dbl>, localidad <chr>, ageb <chr>,
## # manzana <dbl>, tipoUniEco <chr>, geometry <POINT>
tacos_tortas, quédese con los negocios cuyo nombre de establecimiento (nom_establec) deje claro que venden tacos (no queremos torterías). (Pista: use las funciones de stringr con palabras como tacos, takeria, etc.) Guarde esta información en un objeto llamado taquerias_cdmx.pat <- rebus:: SPC %R% or1(c("TAQ", "TAK")) # creamos un rebus con las palabras TAQ y TAK, que filtre las taquerías
taquerias_chilangas <- tacos_tortas %>%
filter(str_detect(tacos_tortas$nom_estab, pat), !tacos_tortas$nom_estab == "LOS TACOS DE LA ABUELA TAQUERIA") #Hicimos un último filtro para quitar ese valor atípico
print(taquerias_chilangas, N=10)
## Simple feature collection with 183 features and 27 fields
## geometry type: POINT
## dimension: XY
## bbox: xmin: -99.28908 ymin: 19.18455 xmax: -98.98622 ymax: 19.50816
## CRS: NA
## # A tibble: 183 x 28
## nom_estab codigo_act nombre_act per_ocu tipo_v_e_1 tipo_v_e_2 tipo_v_e_3
## * <chr> <dbl> <chr> <chr> <chr> <chr> <chr>
## 1 621 TAQUER~ 722514 Restaurantes~ 6 a 10~ CALLE VIADUCTO VIADUCTO
## 2 68 69 TAQU~ 722514 Restaurantes~ 0 a 5 ~ CALLE CALLE CALLE
## 3 72 TAQUERI~ 722514 Restaurantes~ 0 a 5 ~ CALLE CALLE CALLE
## 4 A TAKEAR 722514 Restaurantes~ 6 a 10~ AVENIDA CIRCUITO CALLE
## 5 ANEXO DE T~ 722514 Restaurantes~ 0 a 5 ~ CALLE CALLE CALLE
## 6 ANTOJITOS ~ 722514 Restaurantes~ 0 a 5 ~ CALLE ANDADOR CALLE
## 7 APOYO A TA~ 722514 Restaurantes~ 0 a 5 ~ CALLE CALLE CALLE
## 8 AUXILIAR D~ 722514 Restaurantes~ 0 a 5 ~ CALLE CALLE CALLE
## 9 BANQUETES ~ 722514 Restaurantes~ 0 a 5 ~ CALLE CALLE CALLE
## 10 BODEGA 4 T~ 722514 Restaurantes~ 0 a 5 ~ AVENIDA CALLE CALLE
## # ... with 173 more rows, and 21 more variables: numero_ext <dbl>,
## # letra_ext <chr>, edificio <chr>, edificio_e <chr>, numero_int <dbl>,
## # letra_int <chr>, tipo_asent <chr>, nomb_asent <chr>, nom_CenCom <chr>,
## # num_local <chr>, cod_postal <dbl>, cve_ent <chr>, entidad <chr>,
## # cve_mun <chr>, nom_mun <chr>, cve_loc <dbl>, localidad <chr>, ageb <chr>,
## # manzana <dbl>, tipoUniEco <chr>, geometry <POINT>
leaflet de las taquerías en la CDMX que contenga la siguiente información:
4.1. Un mapa base (provider) de tonalidad oscura. Recuerde que puede ver una previsualización de los providers en este enlace: https://leaflet-extras.github.io/leaflet-providers/preview/
4.2. Los puntos que indiquen las ubicaciones de cada uno de estos negocios de un color contrastante con el fondo (usted decide cual color). Para esto, puede usar su sentido común o utilizar herramientas como https://webaim.org/resources/contrastchecker/, que le permiten ver que tan bueno es el contraste entre colores.
4.3. Los puntos tienen que tener un label que, cuando el usuario pase el cursor se pueda ver el nombre del establecimiento.
4.4. Los puntos tienen que tener un popup que, cuando el usuario de click en cada elemento del mapa, se muestre el nombre del establecimiento, la localidad o alcaldía en la que se encuentra y el tipo de Unidad Económica.
4.5 OPCIONAL. Coloque los polígonos de las alcaldías debajo de los puntos de las taquerías. Para esto, puede basarse en el código de la clase pasada. Igualmente, si buscando en internet ve alguna característica de R-Leaflet que le agrade, puede incluirla en su mapa.
Label_taquerias_chilangas <- lapply(str_c("<b style = 'color:red;'> Nombre: </b><br>",
taquerias_chilangas$nom_estab), htmltools::HTML) #Añadimos etiquetas para el label
Popup_taquerias_chilangas <- str_c(taquerias_chilangas$nom_estab, "<br>", #Añadimos características del popup
"Asentamiento: ", taquerias_chilangas$nomb_asent, "<br>",
"Capacidad de la taquería: ", taquerias_chilangas$per_ocu, "<br>",
"Alcaldía: ", taquerias_chilangas$nom_mun, "<br>",
"CP: ", taquerias_chilangas$cod_postal)
leaflet() %>%
addProviderTiles(providers$Stamen.Toner) %>% #Creamos el gráfico con un fondo de color contrastante
addCircleMarkers(data = taquerias_chilangas,
color = "red",
radius = 5,
label = Label_taquerias_chilangas,
popup = Popup_taquerias_chilangas)
En el rebus buscaría establecimientos que venden burrito, para es crearía otro patrón simple: pat <- c(“BURR”) y luego sustituiría ese patrón en la columna nom_estab de la base tacos_tortas y eso lo guardaría en un objeto llamado burritos