Elaboración de una gráfica de barras con el número de horas curso impartidas por año; los cursos a su vez se categorizan e función de si el postgrado esta dentro del Programa Nacional de Postgrados de Calidad de CONACyT (PNPC).

library(knitr)
opts_chunk$set(echo=T, warning=FALSE, eval = TRUE, error = FALSE, message = FALSE)

library(easypackages)
#Logistic Packages
pkg<-c("ggplot2", "treemap", "tidyverse", "plyr", "htmltools") #Incluye los programas aqui
lapply(pkg,function(x) if(x %in% rownames(installed.packages())==F) install.packages(x, repos='http://cran.us.r-project.org'))
lapply(pkg,require,character.only=TRUE)
libraries(pkg)

Creamos una base de datos; año 1 empieza en septiembre de 2014; año 8 termina el 31 de agosto de 2022.

df4 <- data.frame(Años=c("Año 1", "Año 2",
                         rep("Año 3",2),
                         "Año 4",
                         rep("Año 5",2), "Año 6",
                         rep("Año 7",2),
                         "Año 8"),
                  PNPC=c("PNPC", 
                         "no PNPC",
                         "no PNPC", "PNPC" ,
                         NA,
                         "no PNPC","PNPC",
                         NA,
                         "no PNPC","PNPC",
                         "PNPC"),
                  Horas=c(42,
                          84,
                          24,36,
                          0,
                          20, 66,
                          0,
                          24,42,
                          84))

Preparamos los datos para poder elaborar la gráfica.

df_sorted <- arrange(df4, Años, -Horas) 
# head(df_sorted)
# df_sorted
# Calculate the cumulative sum of len for each dose
df_cumsum <- ddply(df_sorted, "Años", transform, label_ypos=cumsum(Horas))
# head(df_cumsum)
df_cumsum

Elaboramos la gráfica.

ggplot(data=df_cumsum, aes(x=Años, y=Horas, fill=PNPC)) +
  geom_bar(stat="identity") +
  scale_fill_manual(values = c("#9D2449","#D4C19C", "#4E232E")) +
  theme_minimal() + theme(axis.title.x = element_text(color="black", size=14, face="bold"),
                          axis.title.y = element_text(color="black", size=14, face="bold"), 
                          axis.text.x = element_text(face = "bold", color = "black", size = 12, angle = 0),
                          axis.text.y = element_text(face = "bold", color = "black", size = 12, angle = 0),
                          legend.title=element_text(size=12, face = "bold"), 
                          legend.text=element_text(size=10, face = "bold")) + 
  geom_text(aes(y=label_ypos, label=Horas), vjust=1.6, color="white", size=5, family="Times", fontface="bold", lineheight=1.2)

La gráfica de arriba se exportó en formato “svg” y se trabajo en Inkscape; dónde se agregó información para crear la siguiente gráfica:

Puedes descargar el archivo en “svg” aquí (nota: usa el font GMX):

Descargar archivo svg

Muchas gracias por su atención, espero que este tutorial sea de utilidad.