El presente documento muestra como crear diagramas de barras (Bar Charts) en el lenguaje de programación R, utilizando la funón base barplot(), así como los paquetes ggplot2 y lattice, incluimos código de Python y el uso de la librería Matplotlib.
Recomendamos instalar las últimas versiones de R,RStudio,Python y Quarto
Diagramas de Barras
El diagrama de barras (Bar Chart) es un gráfico estadístico que nos permite representar la distribución de frecuencias de variables cualitativas y cuantitativas discretas; nuestro objetivo es pasar del lápiz y papel al uso de los lenguajes de programación R version 4.2.1 (2022-06-23 ucrt)(R Core Team, 2022) y Python 3.9.7(Van Rossum & Drake Jr, 1995), recomendamos la lectura del libro El Arte de Programar en R(Santana Sepúlveda et al., 2014); compartimos la siguiente imagen como referencia.
Data Set - mtcars
mtcars es un data set que ya viene precargado al momento de instalar el lenguaje de programación R en nuestro sistema, haremos uso de dicho data set para la creación de distintos diagramas de barras, de las 11 variables y 32 observaciones que lo componen nos enfocaremos en las variables cyl (cilindro) y gear (engranajes) como se muestra a continuación.
mpg cyl disp hp
Min. :10.40 Min. :4.000 Min. : 71.1 Min. : 52.0
1st Qu.:15.43 1st Qu.:4.000 1st Qu.:120.8 1st Qu.: 96.5
Median :19.20 Median :6.000 Median :196.3 Median :123.0
Mean :20.09 Mean :6.188 Mean :230.7 Mean :146.7
3rd Qu.:22.80 3rd Qu.:8.000 3rd Qu.:326.0 3rd Qu.:180.0
Max. :33.90 Max. :8.000 Max. :472.0 Max. :335.0
drat wt qsec vs
Min. :2.760 Min. :1.513 Min. :14.50 Min. :0.0000
1st Qu.:3.080 1st Qu.:2.581 1st Qu.:16.89 1st Qu.:0.0000
Median :3.695 Median :3.325 Median :17.71 Median :0.0000
Mean :3.597 Mean :3.217 Mean :17.85 Mean :0.4375
3rd Qu.:3.920 3rd Qu.:3.610 3rd Qu.:18.90 3rd Qu.:1.0000
Max. :4.930 Max. :5.424 Max. :22.90 Max. :1.0000
am gear carb
Min. :0.0000 Min. :3.000 Min. :1.000
1st Qu.:0.0000 1st Qu.:3.000 1st Qu.:2.000
Median :0.0000 Median :4.000 Median :2.000
Mean :0.4062 Mean :3.688 Mean :2.812
3rd Qu.:1.0000 3rd Qu.:4.000 3rd Qu.:4.000
Max. :1.0000 Max. :5.000 Max. :8.000
summary(mtcars$cyl)
Min. 1st Qu. Median Mean 3rd Qu. Max.
4.000 4.000 6.000 6.188 8.000 8.000
cyl_table <-sqldf("select cyl,count(cyl) as cantidad from mtcars group by cyl")cyl_table
cyl cantidad
1 4 11
2 6 7
3 8 14
summary(mtcars$gear)
Min. 1st Qu. Median Mean 3rd Qu. Max.
3.000 3.000 4.000 3.688 4.000 5.000
gear_table <-sqldf("select gear,count(gear) as cantidad from mtcars group by cyl")gear_table
gear cantidad
1 4 11
2 4 7
3 3 14
summary(mtcars$carb)
Min. 1st Qu. Median Mean 3rd Qu. Max.
1.000 2.000 2.000 2.812 4.000 8.000
carb_table <-sqldf("select carb,count(carb) as cantidad from mtcars group by carb")carb_table
SQLDF(Grothendieck, 2017) es un paquete del lenguaje de programación R, que permite ejecutar sentencias SQL sobre data frames, utilizaremos el data set mtcars, así como sus variables cyl (cilindros), gear (engranajes) y carb (carburadores).
La función barplot() nos permite crear diagramas de barras (Bar Charts) en el lenguaje de programación R, utilizaremos la variable cyl (cilindros) para crear el gráfico estadístico reespectivo, como se muestra en la siguiente imagen.
x <-table(mtcars$cyl)colores <-c("orange","blue","purple")barplot(x,xlab="Cilindros",ylab="Frecuencias",main="Número de Cilindros",col=colores)
ggplot2(Wickham, 2016) es un paquete del lenguaje de programación que nos permite crear gráficos estadísticos de gran calidad, haremos uso de la variable cyl (cilindros) para la creación del gráfico estadístico respectivo, como se muestra a continuación.
ggplot(mtcars,aes(cyl)) +geom_bar(fill=colores) +labs(x="Cillindros",y="Frecuencias",title="Número de Cilindros") +theme_dark()
Bar Chart - Lattice
Lattice(Sarkar, 2008) es un paquete del lenguaje de programación R, que nos permite crear gráficos estadísticos de muy buena calidad, nos enfocaremos en la variable cyl (cilindros) para la creación del gráfico estadístico respectivo, como se muestra a continuación.
barchart(x,xlab="Cilindros",ylab="Frecuencias",main="Número de Cilindros",col=colores,horizontal=FALSE)
Consejo!!!
El conocimiento de Markdown mejora la estructura y presentación de tus documentos Quarto
mtcars - cyl & gear
A continuación, mostramos como unir dos diagramas de barras (Bar Charts) en un solo gráfico, tomando como base el data set mtcars, así como sus variables cyl (cilindros) y gear (engranajes).
y <-table(mtcars$gear)par(mfrow=c(1,2))barplot(x,xlab="Cilindros",ylab="Frecuencias",main="Número de Cilindros",col=colores)barplot(y,xlab="Engranajes",ylab="Frecuencias",main="Número de Engranajes",col=rainbow(3))
Nota
Quarto permite ejecutar código de R,Python,Julia y Observable JS.
Bar Charts - Matplotlib
Matplotlib(Hunter, 2007) es una librería del lenguaje de programación Python, que nos permite crear gráficos estadísticos de gran calidad, RMarkdown(Allaire et al., 2022) nos permite trabajar con otros lenguajes de programación tales como C++, SQL, Julia, entre muchos otros; a continuación mostramos un diagrama de barras (Bar Chart) creado con Matplotlib.
eje_x = ['Python', 'R', 'Node.js', 'PHP']eje_y = [50,20,35,47]plt.bar(eje_x, eje_y)plt.ylabel('Cantidad de usuarios')plt.xlabel('Lenguajes de programación')plt.title('Usuarios de lenguajes de programación')plt.show()
Diagrama Barras Apiladas
A continuación, presentamos como crear un diagrama de barras apiladas en el lenguaje de programación Python, utilizando las librerías Matplotlib y Numpy(Harris et al., 2020).
Mostrar-Ocultar Código
serie_1 = [406, 387, 442, 457, 485]serie_2 = [421, 453, 435, 478, 512]numero_de_grupos =len(serie_1)indice_barras = np.arange(numero_de_grupos)ancho_barras =0.35plt.bar(indice_barras, serie_1, width=ancho_barras, label='Hombres')plt.bar(indice_barras + ancho_barras, serie_2, width=ancho_barras, label='Mujeres')plt.legend(loc='best')plt.xticks(indice_barras + ancho_barras, ('2017', '2018', '2019', '2020','2021'))plt.ylabel('Numero de habitantes')plt.xlabel('Año')plt.title('Numero de habitantes por genero')plt.show()
Markdown - RMarkdown - Quarto
A continuación, mostramos los logos que identifican a las herramientas Markdown1,RMarkdown2 y Quarto3.
Figura 1: Logo Markdown
Figura 2: Logo RMarkdown
Figura 3: Logo Quarto
YouTube - Tutorial
Compartimos el siguiente tutorial tomado de la plataforma YouTube que muestra como crear diagramas de barras (Bar Charts) haciendo uso de la función barplot() y el paquete ggplot2 del lenguaje de programación R.
Referencias
Allaire, J., Xie, Y., McPherson, J., Luraschi, J., Ushey, K., Atkins, A., Wickham, H., Cheng, J., Chang, W., & Iannone, R. (2022). rmarkdown: Dynamic Documents for R. https://github.com/rstudio/rmarkdown
Harris, C. R., Millman, K. J., Walt, S. J. van der, Gommers, R., Virtanen, P., Cournapeau, D., Wieser, E., Taylor, J., Berg, S., Smith, N. J., Kern, R., Picus, M., Hoyer, S., Kerkwijk, M. H. van, Brett, M., Haldane, A., Río, J. F. del, Wiebe, M., Peterson, P., … Oliphant, T. E. (2020). Array programming with NumPy. Nature, 585(7825), 357-362. https://doi.org/10.1038/s41586-020-2649-2
Hunter, J. D. (2007). Matplotlib: A 2D graphics environment. Computing in Science & Engineering, 9(3), 90-95. https://doi.org/10.1109/MCSE.2007.55
R Core Team. (2022). R: A Language and Environment for Statistical Computing. R Foundation for Statistical Computing. https://www.R-project.org/
Santana Sepúlveda, S., Mateos Farfán, E., et al. (2014). El arte de programar en R: un lenguaje para la estadı́stica. México: Instituto Mexicano de Tecnologı́a del Agua. UNESCO. Comité Nacional ….
Van Rossum, G., & Drake Jr, F. L. (1995). Python reference manual. Centrum voor Wiskunde en Informatica Amsterdam.
Wickham, H. (2016). ggplot2: Elegant Graphics for Data Analysis. Springer-Verlag New York. https://ggplot2.tidyverse.org
Notas
Markdown es un lenguaje de marcado ligero, que permite configurar la estructura y presentación de nuestros documentos, para luego convertirlos a formatos HTML.↩︎
RMarkdown es un paquete del lenguaje de programación R, que nos permite crear documentos científicos y técnicos para convertirlos a formatos tales como HTML,PDF,Word entre otros.↩︎
Quarto es un sistema de publicación de documentos científicos y técnicos, que nos permite ejecutar código de R,Python,Julila y Observable JS.↩︎
Correr el código
---title: "Bar Charts - R"subtitle: "barplot() - ggplot2 - lattice"description: El presente documento muestra como crear diagramas de barras (Bar Charts) en el lenguaje de programación R, utilizando la funón base barplot(), así como los paquetes ggplot2 y lattice, incluimos código de Python y el uso de la librería Matplotlib.date: today #now #last-modifiedauthor: name: Renzo Cáceres Rossi url: https://www.youtube.com/c/renzocaceresrossi affiliation: Hablamos R affiliation-url: https://hablamosr.blogspot.com/title-block-banner: "#808080"format: html: theme: flatly toc: true toc-title: Menú Bar Charts code-tools: true css: "style_028.css"bibliography: biblio_028.bibcsl: apa.csllink-citations: yeslang: Es-es---<!-- Quarto es un sistema de publicación de documentos científicos y técnicos -->```{r setup,include=FALSE}library(ggplot2)library(lattice)library(sqldf)library(reticulate)``````{python,include=FALSE}from platform import python_versionversion=python_version()import matplotlib.pyplot as pltimport numpy as np```:::{.callout-important}Recomendamos instalar las últimas versiones de **R,RStudio,Python y Quarto**:::## Diagramas de Barras El diagrama de barras (**Bar Chart**) es un gráfico estadístico que nos permite representar la distribución de frecuencias de variables cualitativas y cuantitativas discretas; nuestro objetivo es pasar del lápiz y papel al uso de los lenguajes de programación `r R.version.string`[@Rprogramming] y Python `r py$version`[@van1995python], recomendamos la lectura del libro **El Arte de Programar en R**[@santana2014arte]; compartimos la siguiente imagen como referencia.<center>{width=400}</center>## Data Set - mtcars**mtcars** es un data set que ya viene precargado al momento de instalar el **lenguaje de programación R** en nuestro sistema, haremos uso de dicho data set para la creación de distintos diagramas de barras, de las 11 variables y 32 observaciones que lo componen nos enfocaremos en las variables **cyl** (cilindro) y **gear** (engranajes) como se muestra a continuación.:::{.panel-tabset}### mtcars```{r mtcars}summary(mtcars)```### var_cyl ```{r var_cyl}summary(mtcars$cyl)cyl_table <-sqldf("select cyl,count(cyl) as cantidad from mtcars group by cyl")cyl_table```### var_gear```{r var_gear}summary(mtcars$gear)gear_table <-sqldf("select gear,count(gear) as cantidad from mtcars group by cyl")gear_table```### var_carb```{r var-carb}summary(mtcars$carb)carb_table <-sqldf("select carb,count(carb) as cantidad from mtcars group by carb")carb_table```:::## mtcars - SQL**SQLDF**[@sqldf] es un paquete del lenguaje de programación R, que permite ejecutar sentencias SQL sobre data frames, utilizaremos el data set **mtcars**, así como sus variables **cyl** (cilindros), **gear** (engranajes) y **carb** (carburadores).::::{.columns}:::{.column width="33%"}### var_cyl```{r sql_cyl,echo=FALSE}cyl_table <-sqldf("select cyl,count(cyl) as cantidad from mtcars group by cyl")cyl_table```::::::{.column width="33%"}### var_gear```{r sql_gear,echo=FALSE}gear_table <-sqldf("select gear,count(gear) as cantidad from mtcars group by cyl")gear_table```::::::{.column width="33%"}### var_carb```{r sql_carb,echo=FALSE}carb_table <-sqldf("select carb,count(carb) as cantidad from mtcars group by carb")carb_table```::::::::::{.callout-warning collapse="true"}## Click aquí como instalar y activar paquetes en Rinstall.packages("ggplot2")<br>install.packages("lattice")<br>install.packages("reticulate")<br>install.packages("sqldf")<br>library(ggplot2)<br>library(lattice)<br>library(reticulate)<br>library(sqldf):::## Bar Chart - barplot()La función `barplot()` nos permite crear diagramas de barras (**Bar Charts**) en el lenguaje de programación R, utilizaremos la variable cyl (**cilindros**) para crear el gráfico estadístico reespectivo, como se muestra en la siguiente imagen.```{r barplot,fig.align='center'}x <-table(mtcars$cyl)colores <-c("orange","blue","purple")barplot(x,xlab="Cilindros",ylab="Frecuencias",main="Número de Cilindros",col=colores)```[Recomendamos **R for Data Science**- Cognitive Class <https://cognitiveclass.ai/courses/r-101>{target=_blank}]{.aside}## Bar Chart - ggplot2**ggplot2**[@ggplot2] es un paquete del lenguaje de programación que nos permite crear gráficos estadísticos de gran calidad, haremos uso de la variable cyl (**cilindros**) para la creación del gráfico estadístico respectivo, como se muestra a continuación.```{r ggplot2,fig.align='center',out.width="80%"}ggplot(mtcars,aes(cyl)) +geom_bar(fill=colores) +labs(x="Cillindros",y="Frecuencias",title="Número de Cilindros") +theme_dark()```## Bar Chart - Lattice**Lattice**[@lattice] es un paquete del lenguaje de programación R, que nos permite crear gráficos estadísticos de muy buena calidad, nos enfocaremos en la variable cyl (**cilindros**) para la creación del gráfico estadístico respectivo, como se muestra a continuación.```{r lattice,fig.align='center'}barchart(x,xlab="Cilindros",ylab="Frecuencias",main="Número de Cilindros",col=colores,horizontal=FALSE)```:::{.callout-tip}## Consejo!!!El conocimiento de **Markdown** mejora la estructura y presentación de tus documentos **Quarto**:::## mtcars - cyl & gearA continuación, mostramos como unir dos diagramas de barras (**Bar Charts**) en un solo gráfico, tomando como base el data set **mtcars**, así como sus variables **cyl** (cilindros) y **gear** (engranajes).```{r cyl_gear,fig.align='center'}y <-table(mtcars$gear)par(mfrow=c(1,2))barplot(x,xlab="Cilindros",ylab="Frecuencias",main="Número de Cilindros",col=colores)barplot(y,xlab="Engranajes",ylab="Frecuencias",main="Número de Engranajes",col=rainbow(3))```:::{.callout-note}**Quarto** permite ejecutar código de R,Python,Julia y Observable JS.:::## Bar Charts - Matplotlib**Matplotlib**[@Hunter:2007] es una librería del lenguaje de programación Python, que nos permite crear gráficos estadísticos de gran calidad, **RMarkdown**[@RMarkdown] nos permite trabajar con otros lenguajes de programación tales como **C++, SQL, Julia**, entre muchos otros; a continuación mostramos un diagrama de barras (**Bar Chart**) creado con Matplotlib.```{python,results='hide',collapse=TRUE,fig.align="center"}eje_x = ['Python', 'R', 'Node.js', 'PHP']eje_y = [50,20,35,47]plt.bar(eje_x, eje_y)plt.ylabel('Cantidad de usuarios')plt.xlabel('Lenguajes de programación')plt.title('Usuarios de lenguajes de programación')plt.show()```## Diagrama Barras ApiladasA continuación, presentamos como crear un **diagrama de barras apiladas** en el lenguaje de programación Python, utilizando las librerías **Matplotlib** y **Numpy**[@harris2020array].<details><summary>Mostrar-Ocultar Código</summary>```{python,results='hide',collapse=TRUE,fig.align="center"}serie_1 = [406, 387, 442, 457, 485]serie_2 = [421, 453, 435, 478, 512]numero_de_grupos =len(serie_1)indice_barras = np.arange(numero_de_grupos)ancho_barras =0.35plt.bar(indice_barras, serie_1, width=ancho_barras, label='Hombres')plt.bar(indice_barras + ancho_barras, serie_2, width=ancho_barras, label='Mujeres')plt.legend(loc='best')plt.xticks(indice_barras + ancho_barras, ('2017', '2018', '2019', '2020','2021'))plt.ylabel('Numero de habitantes')plt.xlabel('Año')plt.title('Numero de habitantes por genero')plt.show()```</details>## Markdown - RMarkdown - QuartoA continuación, mostramos los logos que identifican a las herramientas **Markdown**[^1],**RMarkdown**[^2] y **Quarto**[^3].:::{layout-ncol=3}{#fig-markdown}{#fig-rmarkdown}{#fig-quarto}:::## YouTube - TutorialCompartimos el siguiente tutorial tomado de la plataforma **YouTube** que muestra como crear diagramas de barras (**Bar Charts**) haciendo uso de la función `barplot()` y el paquete **ggplot2** del lenguaje de programación R.<center><iframewidth="560"height="315"src="https://www.youtube.com/embed/EkxRj02iaLk"title="YouTube video player"frameborder="0"allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture"allowfullscreendata-external=1></iframe></center>[^1]:**Markdown** es un lenguaje de marcado ligero, que permite configurar la estructura y presentación de nuestros documentos, para luego convertirlos a formatos HTML.[^2]:**RMarkdown** es un paquete del lenguaje de programación R, que nos permite crear documentos científicos y técnicos para convertirlos a formatos tales como HTML,PDF,Word entre otros.[^3]:**Quarto** es un sistema de publicación de documentos científicos y técnicos, que nos permite ejecutar código de R,Python,Julila y Observable JS.