Cómo crear un histograma usando código de programación C

Los histogramas se encuentran comúnmente como una opción de gráfico en el análisis de datos en el software de hoja de cálculo y en el software de edición de imágenes para mostrar la distribución de tonos de negro a blanco en una imagen. En el lenguaje de programación C, el uso de una matriz para contener el conteo de frecuencia simplifica la creación de un histograma de su conjunto de datos. Si bien los conjuntos de datos utilizados para crear histogramas generalmente contienen valores enteros, los caracteres e incluso las cadenas se pueden contar y graficar.

Paso 1

Complete una matriz de enteros llamada "valores" con su conjunto de datos y establezca la variable "numvalues" en la cantidad de valores en su conjunto de datos. Estos podrían generarse aleatoriamente, leerse desde un archivo o recopilarse interactivamente del usuario. Este ejemplo inicializa estas variables cuando se declaran:

int numvalores =20; valores int[numvalues] ={ -3, 2, -2, 4, 5, 4, 2, 5, 4, 5, -1, 2, 3, 4, 7, 4, 2, 0, 7, -3 };

Paso 2

Configure dos variables enteras (i y j) para usar como iteradores:

int i =0, j =0;

Paso 3

Repita sus datos, la matriz de valores, y establezca la variable "maxval" en el valor máximo de sus datos:

int maxval =0; for (i=0; i maxval) maxval =valores[i] }

Paso 4

Recorra sus datos y configure la variable "minval" al valor máximo de sus datos:

int minval =maxval; for (i=0; i

Paso 5

Declare una variable "freqsize" para contener el tamaño de su matriz de frecuencias:

int tamañofrecuencia =maxval - minval + 1;

Paso 6

Declare una matriz para contener los conteos de frecuencia e inicialice cada elemento de la matriz a cero:

int frecuencia[tamañofrecuencia]; for (i=0; i

Hay un elemento de matriz para cada valor posible en su conjunto de datos.

Paso 7

Recorra cada valor en su conjunto de datos, agregando uno al elemento de la matriz de frecuencia correspondiente a ese valor:

for (i =0; i

El índice correspondiente al valor actual se genera desplazando el valor por el valor mínimo.

Paso 8

Recorra cada elemento en la matriz de frecuencia. Imprime el valor actual (calculado desplazando el iterador "i" por el valor mínimo). Imprime el número de estrellas (*) correspondiente a la frecuencia el valor actual pasando de uno al valor almacenado en la matriz de frecuencias, imprimiendo una sola estrella cada vez:

for (i=1; i<=tamañofrecuencia; i++) { printf("%2d\t|", i + minval); for(j=0; j