library(vembedr)
embed_url("https://www.youtube.com/watch?v=HF-CuxhPeW8")
Gráfico de Barras Apiladas (Stacked Bar Chart): En este tipo de gráfico, las barras se dividen en segmentos que representan diferentes categorías. Cada segmento podría considerarse como un componente.
Gráfico de Áreas Apiladas (Stacked Area Chart): Similar al gráfico de barras apiladas, pero con áreas. Cada área representa una categoría y las áreas se apilan unas sobre otras.
Gráfico de Pastel (Pie Chart): Como en el código que proporcionaste, un gráfico circular puede tener secciones (o “componentes”) que representan diferentes proporciones o categorías.
Gráfico de Donut (Donut Chart): Similar al gráfico circular, pero con un agujero en el centro. También tiene componentes que representan diferentes proporciones.
# Lectura de datos --------------------------------------------
# Se lee un archivo CSV llamado 'CARGA_DATASETS_V2.csv' y se almacena en la variable Trabajo.
# 'header = T' indica que la primera fila contiene nombres de columna.
# 'sep = ';'' especifica que el separador de campos es el punto y coma.
Trabajo = read.csv('CARGA_DATASETS_V2.csv', header = T, sep = ';')
# Limpieza de datos -------------------------------------------
# Se aplican transformaciones al conjunto de datos Trabajo:
# 1. Convertir fechas a objetos tipo Date utilizando ymd de lubridate.
# 2. Crear nuevas variables DIA_ATENCION y MES_ATENCION.
# 3. Normalizar nombres de departamentos.
# 4. Seleccionar un subconjunto específico de columnas.
Trabajo = Trabajo %>% mutate(
FECHA_ATENCION = ymd(FECHA_ATENCION),
FECHA_INTERNAMIENTO = ymd(FECHA_INTERNAMIENTO),
FECHA_ALTA = ymd(FECHA_ALTA)
) %>%
mutate(
DIA_ATENCION = day(FECHA_ATENCION),
MES_ATENCION = month(FECHA_ATENCION)
) %>%
mutate(DEPARTAMENTO = ifelse(
DEPARTAMENTO == 'JUNIN',
'Junin',
ifelse(DEPARTAMENTO == 'AREQUIPA', 'Arequipa',
DEPARTAMENTO)
)) %>%
select(4:8, 11:12, 14:16, 18:19, 24:25, 20:22)
attach(Trabajo) # No se recomienda usar attach; podría causar confusiones en el espacio de nombres
# Hallar proporción
# Calcular la proporción de cada valor único en la columna SEXO y redondear a cero decimales.
tsexo = round(prop.table(table(SEXO)) * 100, 0)
# Paleta de colores
# Definir una paleta de colores para el gráfico de pastel.
colores <- c("pink", "skyblue")
# Gráfico
# Crear un gráfico de pastel con etiquetas y colores personalizados.
pie(tsexo,
labels = sprintf("%s\n%.0f%%", names(tsexo), tsexo),
col = colores,
main = "Proporción de paciente por sexo",
cex = 0.8, # Tamaño de las etiquetas
radius = 0.8) # Tamaño del pastel
# Filtrar datos para casos de cáncer de estómago
Cancer_Estomago = Trabajo %>%
filter(GRUPO_DIAGNOSTICOS == "CANCER DE ESTOMAGO") %>%
group_by(SEXO) %>% summarize(n = n())
# Calcular porcentaje en relación con el total de casos
Cancer_Estomago = Cancer_Estomago %>% mutate(porcentaje = (n/sum(n))*100)
# Crear gráfico de barras apiladas (geom_bar) con coordenadas polares
ggplot(Cancer_Estomago, aes(x = "", y = porcentaje, fill = SEXO)) +
geom_bar(stat = "identity", width = 1) + coord_polar(theta = "y") +
# Eliminar elementos de fondo (theme_void)
theme_void() +
# Agregar etiquetas de porcentaje en el centro de las barras (geom_text)
geom_text(aes(label = sprintf("%.1f%%", porcentaje)),
position = position_stack(vjust = 0.5), size = 5) +
# Definir colores manuales (scale_fill_manual)
scale_fill_manual(values = c("pink", "skyblue")) +
# Configurar título del gráfico (labs) y estilo del título (theme)
labs(title = "En el Perú las mujeres presentan más casos de\ncáncer al estómago que los hombres") +
theme(plot.title = element_text(size = 30))
# Calcular la proporción de pacientes por sexo y redondear a cero decimales
tsexo = round(prop.table(table(SEXO)) * 100, 0)
# Crear un gráfico de waffle utilizando la librería waffle
waffle(tsexo, colors=c('pink','skyblue'),
title = 'La cantidad de pacientes del sexo femenino es casi 3 veces mayor que la del sexo masculino')
# 2. Crear una gráfica de barras apiladas al 100% que represente cómo es la
# proporción de los casos de cáncer de colon, cuello uterino y estómago en los
# departamentos de Lima y Arequipa
# Filtrar datos para los casos de cáncer de colon, cuello uterino y estómago en Lima y Arequipa
Trabajo %>%
filter(GRUPO_DIAGNOSTICOS %in% c("CANCER DE CUELLO UTERINO", "CANCER DE COLON", "CANCER DE ESTOMAGO") & DEPARTAMENTO %in% c('Lima', 'Arequipa')) %>%
# Crear gráfico de barras apiladas al 100%
ggplot() +
aes(x = DEPARTAMENTO, fill = GRUPO_DIAGNOSTICOS) +
geom_bar(position = "fill") +
# Ajustar el esquema de color
scale_fill_hue(direction = 1) +
# Configurar título y etiquetas de ejes
labs(title = "Tanto en Lima como Arequipa predomina el cáncer de cuello uterino sobre los de estómago y colon",
y = "Porcentaje de DIAGNOSTICO") +
# Configurar el tema del gráfico
theme_minimal() +
# Configurar el eje y para mostrar porcentajes
scale_y_continuous(labels = scales::percent_format(scale = 100))
# Lectura de datos --------------------------------------------
df = read.csv2("Casos_Anemia_Region_Cusco_2010_2020_Cusco.csv", encoding = "UTF-8")
# Crear una nueva columna "TOTAL" sumando las columnas "CASOS" y "NORMAL"
# Renombrar algunas columnas para mayor claridad
df %>%
mutate(TOTAL = CASOS + NORMAL) %>%
dplyr::rename("CASOS_TOTALES" = TOTAL, "CASOS_SIN_ANEMIA" = NORMAL, "CASOS_CON_ANEMIA" = CASOS) -> df
# COMPARACIÓN DE PARTIDAS
# 1 - GRAFICA
# Filtrar las filas donde la columna "PROVINCIA" no sea "NULL"
# Agrupar por "PROVINCIA" y calcular la suma de "CASOS_CON_ANEMIA" y "CASOS_TOTALES" para cada provincia
df %>%
filter(PROVINCIA != "NULL") %>%
group_by(PROVINCIA) %>%
summarise(SUMA_CASOS_CON_ANEMIA = sum(CASOS_CON_ANEMIA),
SUMA_CASOS_TOTALES = sum(CASOS_TOTALES)) %>%
# Crear un gráfico de barras apiladas horizontal
ggplot() + aes(x = PROVINCIA,
y = SUMA_CASOS_CON_ANEMIA / SUMA_CASOS_TOTALES,
fill = PROVINCIA) +
geom_bar(stat = "identity", show.legend = FALSE) +
scale_y_continuous(labels = scales::percent) + coord_flip() +
# Resaltar la provincia de Quispicanchi
gghighlight(PROVINCIA == "QUISPICANCHI") +
# Configuración de etiquetas y título
labs(y = "Proporción entre el número de casos de anemia entre el número de personas que se realizaron la prueba",
title = "La provincia del departamento del Cusco con mayor proporción es Quispicanchi con el 52.9%",
x = "Provincia") +
# Agregar etiquetas de porcentaje en las barras
geom_text(aes(label = paste(round(100 * SUMA_CASOS_CON_ANEMIA / SUMA_CASOS_TOTALES, 1), "%")),
vjust = 0.0)
# Lectura de datos
datos <- read_xlsx("Catalogo1960_2021.xlsx")
# Tabla que muestra la magnitud promedia de sismos ocurridos en agosto del 2007
datos %>%
# Convertir la columna FECHA_UTC a tipo de dato fecha
mutate(FECHA_UTC = ymd(FECHA_UTC)) %>%
# Crear nuevas columnas AÑO, MES, DIA a partir de la columna FECHA_UTC
mutate(AÑO = year(FECHA_UTC), MES = month(FECHA_UTC), DIA = day(FECHA_UTC)) %>%
# Seleccionar las columnas relevantes
select(AÑO, MES, MAGNITUD, DIA) %>%
# Filtrar los datos para el año 2007 y el mes de agosto
filter(AÑO == 2007 & MES == 8) %>%
# Agrupar por el día y calcular la magnitud media para cada día
group_by(DIA) %>%
summarize(media_mag = mean(MAGNITUD)) -> graf_ejemplo
# Gráfica de la magnitud promedia en agosto del 2007
ggplot(graf_ejemplo) +
aes(x = DIA, y = media_mag) +
geom_line(size = 0.8, color = "green") +
geom_point(color = "green") +
theme_bw() +
labs(title = "El 15 de Agosto del 2007 se registró el sismo de mayor magnitud media",
x = "Días",
y = "Magnitud de los sismos") +
scale_x_continuous(breaks = seq(1:31))
# Evolución de la magnitud promedio de los sismos en el periodo de estudio
datos %>%
# Convertir la columna FECHA_UTC a tipo de dato fecha
mutate(FECHA_UTC = ymd(FECHA_UTC)) %>%
# Crear nuevas columnas año y mes a partir de la columna FECHA_UTC
mutate(año = year(FECHA_UTC), mes = month(FECHA_UTC)) %>%
# Filtrar los datos para años menores a 2021
filter(año < 2021) %>%
# Agrupar por año y calcular la magnitud promedio para cada año
group_by(año) %>%
summarise(magnitud_promedio = mean(MAGNITUD)) -> graf_ejemplo3
# Crear una gráfica de línea de la evolución de la magnitud promedio de sismos
ggplot(graf_ejemplo3) + aes(x = año, y = magnitud_promedio) +
geom_line(size = 0.6, color = "orange") +
geom_point() +
labs(x = "Año",
y = "Magnitud promedio",
title = "Evolución de la magnitud promedio de sismos en el Perú desde 1960-2021")
# Convertir la gráfica ggplot a una gráfica interactiva con ggplotly
ggplotly()
# Lectura de datos
datos <- read.csv("Residuos municipales generados anualmente.csv", sep = ";")
datos %>% rename(REGION = REG_NAT) -> datos
# GRAFICOS NORMALES -------------------------------------------------------
# Creación de un gráfico de histograma con facetado por región y escala logarítmica en el eje y
datos %>%
ggplot() + # Inicia un objeto ggplot
aes(x = (GPC_DOM * 1000), fill = REGION) + # Asigna variables para el eje x y el color
geom_histogram(color = "black", binwidth = 500, show.legend = FALSE) + # Crea un histograma
theme_bw() + # Aplica un tema básico en blanco y negro al gráfico
scale_x_continuous(breaks = seq(250, 2000, 500)) + # Establece marcas específicas en el eje x
facet_wrap(vars(REGION)) + # Faceta el gráfico por la variable "REGION"
scale_y_log10() + # Aplica una escala logarítmica en el eje y
scale_fill_manual(values = c(COSTA = "#fcab64", SELVA = "#09bc8a", SIERRA = "#dda15e")) + # Establece colores específicos
labs(title = "La mayor parte de residuos generados por cada Región están entre los 250g y 750g", # Título del gráfico
x = "Residuos generados por habitante (g)", # Etiqueta del eje x
y = "Conteo") # Etiqueta del eje y
tText1_Final <- tText1 %>% anti_join(Stopwords)
tText1_Final
## # A tibble: 583 × 1
## Token
## <chr>
## 1 noches
## 2 quiero
## 3 dirigirme
## 4 informarles
## 5 actual
## 6 situación
## 7 atraviesa
## 8 país
## 9 decisiones
## 10 presidente
## # ℹ 573 more rows
tText1_Res1 <- tText1_Final %>%
count(Token, sort = TRUE) # sort ordena de forma descendente
Grafc1 <- tText1_Res1 %>% head(10) %>%
ggplot() + aes(x=fct_reorder(Token, n), y=n, fill = Token) + # fct reordenado
# por frecuencia (forcats)
geom_col() + # Siempre geom_col
labs(title = "Mensaje presidencial",
x = NULL,
y = "Frecuencia") +
theme_bw() +
theme(legend.position = "none") + # Sin leyenda
coord_flip() # Barras de lado
Grafc1
set.seed(123) # Asignamos una semilla (codigo de repeticion aleatorio)
wordcloud(words= tText1_Res1$Token, # Utilizamos el mismo item de frecuencia
freq = tText1_Res1$n,
max.words = 100, # Maximo de palabras
random.order = FALSE, # Orden segun frecuencia activo
min.freq = 1, # Frecuencia minima requerida para aparecer
colors=brewer.pal(5,"Dark2")) # Paleta
set.seed(321)
wordcloud2(tText1_Res1,
size = 0.5,
shape = 'cloud') # Define la forma
La escritura de parrafos o saltos de linea se hacen con doble espacio
y enter.
Este es un ejemplo de salto de linea / parrafo.
Lista a travez de numeración.
Colocar numero seguido de un punto y un espacio (estrictamente).
Lo mismo aplica para los siguientes signos de lista (-, *, …)
| Opción | Efecto |
|---|---|
| Include = F | No se mostrará ni código ni resultados, si eval = T solo se ejecutará |
| echo = F | Solo mostrará resultado |
| result = “hide” | No muestra resultados (tablas, estadísticas) |
| message = F | No muestra los resultados de “salida” |
| warning = F | Los warning se irán a la consola |
| eval = F | No ejecutará |
Realizada la lectura via R de la obra “Las Itermitencias de la Muerte - Saramago” junto con la tokenización obtenemos los siguientes gráficos.
Libro_Final <- Libro_Final %>%
count(Token, sort = TRUE) # sort ordena de forma descendente
Grafc1 <- Libro_Final %>% head(10) %>%
ggplot() + aes(x=fct_reorder(Token, n), y=n, fill = Token) + # fct reordenado
# por frecuencia (forcats)
geom_col() + # Siempre geom_col
labs(title = "Las Itermitencias de la Muerte",
x = NULL,
y = "Frecuencia") +
theme_bw() +
theme(legend.position = "none") + # Sin leyenda
coord_flip() # Barras de lado
Grafc1
set.seed(123) # Asignamos una semilla (codigo de repeticion aleatorio)
wordcloud(words= Libro_Final$Token, # Utilizamos el mismo item de frecuencia
freq = Libro_Final$n,
max.words = 100, # Maximo de palabras
random.order = FALSE, # Orden segun frecuencia activo
min.freq = 1, # Frecuencia minima requerida para aparecer
colors=brewer.pal(5,"Dark2")) # Paleta
# 1. Lectura de diccionario nrc en castellano -----------------
sentimientos <- read.delim("sentimientos_2.txt")
sentimientos <- as.tibble(sentimientos)
sentimientos <- distinct(sentimientos)
# 2. Uniendo libro con el diccionario de sentimientos ------
Libro_Sentimientos <- Libro_Final %>%
inner_join(sentimientos,by=c("Token"="palabra"))
# 3. Contando y graficando los sentimientos en el libro ----
Libro_Sentimientos %>%
dplyr::count(sentimiento) %>%
ggplot() + aes(x=fct_reorder(sentimiento,n),
y=n,
fill=sentimiento) +
geom_col(show.legend = F) + coord_flip() +
labs(title ="Análisis de sentimientos del Libro",
subtitle = "Las Itermitencias de la Muerte",
caption = "Fuente: Saramago",
x = "Sentimientos",
y= "Frecuencia") +
theme_bw()