Un diagrama de barras o diagrama de barras es un gráfico que representa la categoría de datos con barras rectangulares con longitudes y alturas proporcionales a los valores que representan. Los gráficos de barras se pueden trazar horizontal o verticalmente. Un gráfico de barras describe las comparaciones entre las categorías discretas. Uno de los ejes del gráfico representa las categorías específicas que se comparan, mientras que el otro eje representa los valores medidos correspondientes a esas categorías.
Creación de un gráfico de barras
La API de matplotlib en Python proporciona la función bar() que se puede usar en el estilo de MATLAB o como una API orientada a objetos. La sintaxis de la función bar() que se utilizará con los ejes es la siguiente:
plt.bar(x, height, width, bottom, align)
La función crea un gráfico de barras delimitado por un rectángulo según los parámetros dados. A continuación, se muestra un ejemplo simple del diagrama de barras, que representa el número de estudiantes matriculados en diferentes cursos de un instituto.
Python3
import numpy as np import matplotlib.pyplot as plt # creating the dataset data = {'C':20, 'C++':15, 'Java':30, 'Python':35} courses = list(data.keys()) values = list(data.values()) fig = plt.figure(figsize = (10, 5)) # creating the bar plot plt.bar(courses, values, color ='maroon', width = 0.4) plt.xlabel("Courses offered") plt.ylabel("No. of students enrolled") plt.title("Students enrolled in different courses") plt.show()
Producción-
Aquí, plt.bar(courses, values, color=’maroon’) se usa para especificar que el gráfico de barras se trazará usando la columna de cursos como el eje X y los valores como el eje Y. El atributo color se usa para establecer el color de las barras (marrón en este caso). plt.xlabel («Cursos ofrecidos») y plt.ylabel («estudiantes inscritos») se usan para etiquetar los ejes correspondientes.plt.title ( ) se usa para hacer un título para el gráfico.plt.show() se usa para mostrar el gráfico como salida usando los comandos anteriores.
Personalización del gráfico de barras
Python3
import pandas as pd from matplotlib import pyplot as plt # Read CSV into pandas data = pd.read_csv(r"cars.csv") data.head() df = pd.DataFrame(data) name = df['car'].head(12) price = df['price'].head(12) # Figure Size fig = plt.figure(figsize =(10, 7)) # Horizontal Bar Plot plt.bar(name[0:10], price[0:10]) # Show Plot plt.show()
Producción:
Se observa en el gráfico de barras anterior que las marcas del eje X se superponen entre sí, por lo que no se pueden ver correctamente. Por lo tanto, al girar las marcas del eje X, puede verse claramente. Es por eso que se requiere la personalización en los gráficos de barras.
Python3
import pandas as pd from matplotlib import pyplot as plt # Read CSV into pandas data = pd.read_csv(r"cars.csv") data.head() df = pd.DataFrame(data) name = df['car'].head(12) price = df['price'].head(12) # Figure Size fig, ax = plt.subplots(figsize =(16, 9)) # Horizontal Bar Plot ax.barh(name, price) # Remove axes splines for s in ['top', 'bottom', 'left', 'right']: ax.spines[s].set_visible(False) # Remove x, y Ticks ax.xaxis.set_ticks_position('none') ax.yaxis.set_ticks_position('none') # Add padding between axes and labels ax.xaxis.set_tick_params(pad = 5) ax.yaxis.set_tick_params(pad = 10) # Add x, y gridlines ax.grid(b = True, color ='grey', linestyle ='-.', linewidth = 0.5, alpha = 0.2) # Show top values ax.invert_yaxis() # Add annotation to bars for i in ax.patches: plt.text(i.get_width()+0.2, i.get_y()+0.5, str(round((i.get_width()), 2)), fontsize = 10, fontweight ='bold', color ='grey') # Add Plot Title ax.set_title('Sports car and their price in crore', loc ='left', ) # Add Text watermark fig.text(0.9, 0.15, 'Jeeteshgavande30', fontsize = 12, color ='grey', ha ='right', va ='bottom', alpha = 0.7) # Show Plot plt.show()
Producción:
Hay muchas más personalizaciones disponibles para gráficos de barras.
Múltiples diagramas de barras
Los diagramas de barras múltiples se utilizan cuando la comparación entre el conjunto de datos debe realizarse cuando una variable está cambiando. Podemos convertirlo fácilmente como un gráfico de barras de áreas apiladas, donde cada subgrupo se muestra uno encima de los demás. Se puede trazar variando el grosor y la posición de las barras. El siguiente diagrama de barras muestra el número de estudiantes aprobados en la rama de ingeniería:
Python3
import numpy as np import matplotlib.pyplot as plt # set width of bar barWidth = 0.25 fig = plt.subplots(figsize =(12, 8)) # set height of bar IT = [12, 30, 1, 8, 22] ECE = [28, 6, 16, 5, 10] CSE = [29, 3, 24, 25, 17] # Set position of bar on X axis br1 = np.arange(len(IT)) br2 = [x + barWidth for x in br1] br3 = [x + barWidth for x in br2] # Make the plot plt.bar(br1, IT, color ='r', width = barWidth, edgecolor ='grey', label ='IT') plt.bar(br2, ECE, color ='g', width = barWidth, edgecolor ='grey', label ='ECE') plt.bar(br3, CSE, color ='b', width = barWidth, edgecolor ='grey', label ='CSE') # Adding Xticks plt.xlabel('Branch', fontweight ='bold', fontsize = 15) plt.ylabel('Students passed', fontweight ='bold', fontsize = 15) plt.xticks([r + barWidth for r in range(len(IT))], ['2015', '2016', '2017', '2018', '2019']) plt.legend() plt.show()
Producción:
Gráfico de barras apiladas
Los diagramas de barras apiladas representan diferentes grupos uno encima del otro. La altura de la barra depende de la altura resultante de la combinación de los resultados de los grupos. Va desde abajo hasta el valor en lugar de ir desde cero hasta el valor. El siguiente diagrama de barras representa la contribución de los niños y niñas en el equipo.
Python3
import numpy as np import matplotlib.pyplot as plt N = 5 boys = (20, 35, 30, 35, 27) girls = (25, 32, 34, 20, 25) boyStd = (2, 3, 4, 1, 2) girlStd = (3, 5, 2, 3, 3) ind = np.arange(N) width = 0.35 fig = plt.subplots(figsize =(10, 7)) p1 = plt.bar(ind, boys, width, yerr = boyStd) p2 = plt.bar(ind, girls, width, bottom = boys, yerr = girlStd) plt.ylabel('Contribution') plt.title('Contribution by the teams') plt.xticks(ind, ('T1', 'T2', 'T3', 'T4', 'T5')) plt.yticks(np.arange(0, 81, 10)) plt.legend((p1[0], p2[0]), ('boys', 'girls')) plt.show()
Producción-
Publicación traducida automáticamente
Artículo escrito por jeeteshgavande30 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA