Un polígono de frecuencia representa cada clase mediante un punto situado sobre su marca y une los puntos consecutivos para mostrar la forma de la distribución.
El histograma muestra una distribución mediante áreas contiguas. El polígono de frecuencia resume esa misma distribución mediante puntos y segmentos.
Cada punto tiene como coordenada horizontal la marca de clase y como coordenada vertical la frecuencia, proporción o densidad correspondiente.
La línea facilita observar la forma general y comparar varias distribuciones sobre los mismos ejes.
La marca de clase es el punto medio de un intervalo:
La marca representa la posición central de la clase. No implica que ese valor haya sido observado.
Utilizamos nuevamente la distribución de 30 tiempos de respuesta agrupados cada 50 ms:
| Intervalo (ms) | Marca xi | Frecuencia fi |
|---|---|---|
| [50, 100) | 75 | 4 |
| [100, 150) | 125 | 9 |
| [150, 200) | 175 | 7 |
| [200, 250) | 225 | 5 |
| [250, 300) | 275 | 3 |
| [300, 350) | 325 | 2 |
| Total | 30 | |
Los pares que se representan son:
El punto (125, 9) indica que la clase centrada en 125 ms posee una frecuencia de 9. Los segmentos conectan clases consecutivas, no observaciones individuales.
Cuando se desea cerrar la figura sobre el eje horizontal, se agregan dos clases imaginarias de frecuencia cero: una antes de la primera y otra después de la última.
Los puntos (25, 0) y (375, 0) completan el contorno. No representan observaciones ni clases reales incluidas en la tabla.
En el ejemplo, la línea alcanza su punto más alto en la marca 125, correspondiente al intervalo [100, 150). Después desciende de forma progresiva hacia tiempos mayores.
La forma permite reconocer la clase modal, cambios de concentración, huecos y posibles picos múltiples. Sin embargo, los segmentos no indican valores intermedios exactos: son una ayuda visual.
| Característica | Histograma | Polígono |
|---|---|---|
| Representación | Barras contiguas. | Puntos unidos por segmentos. |
| Posición horizontal | Intervalos completos. | Marcas de clase. |
| Lectura principal | Frecuencia y área por clase. | Forma y cambios entre clases. |
| Comparar grupos | La superposición puede ocultar barras. | Varias líneas se comparan con facilidad. |
Ambos gráficos pueden superponerse porque utilizan la misma distribución y los mismos ejes.
La altura puede representar frecuencia absoluta, proporción o porcentaje. Para una única muestra, el contorno tendrá la misma forma porque todas las frecuencias se dividen por el mismo total.
Si se comparan grupos de distinto tamaño, deben usarse frecuencias relativas o porcentajes. Comparar conteos absolutos confundiría el tamaño del grupo con la forma de la distribución.
Una ventaja del polígono es que permite dibujar varias series sobre los mismos ejes. Para que la comparación sea válida:
Cambia la amplitud, la medida vertical y la representación. El modo combinado muestra cómo cada punto del polígono se ubica en el centro superior de la barra correspondiente.
Histograma Polígono. El color complementa las etiquetas y el resumen textual.
El polígono hereda las decisiones del histograma. Una amplitud pequeña genera más puntos y una línea irregular; una amplitud grande suaviza la forma y puede ocultar grupos.
No debe interpretarse un cambio causado por los intervalos como si fuera una propiedad nueva de los datos.
Si las clases poseen amplitudes diferentes, no es correcto conectar frecuencias como si fueran directamente comparables. La coordenada vertical debe basarse en densidad:
Las marcas continúan ubicándose en los puntos medios, pero las distancias horizontales entre ellas pueden ser diferentes.
El polígono de frecuencia utiliza marcas de clase y frecuencias de cada intervalo. Una ojiva utiliza límites de clase y frecuencias acumuladas.
| Gráfico | Eje horizontal | Eje vertical |
|---|---|---|
| Polígono de frecuencia | Marcas de clase. | Frecuencia de cada clase. |
| Ojiva | Límites de clase. | Frecuencia acumulada. |
La ojiva nunca disminuye; el polígono sí puede subir y bajar.
Después de calcular las clases, obtenemos las coordenadas a partir de sus marcas y frecuencias:
const clases = [
{ inferior: 50, superior: 100, frecuencia: 4 },
{ inferior: 100, superior: 150, frecuencia: 9 },
{ inferior: 150, superior: 200, frecuencia: 7 }
];
const puntos = clases.map(clase => ({
x: (clase.inferior + clase.superior) / 2,
y: clase.frecuencia
}));
console.log('Puntos del polígono:', puntos);
// Si existe un canvas, también dibujamos los puntos y los segmentos.
if (typeof document !== 'undefined') {
const canvas = document.getElementById('canvasPoligonoCodigo');
const contexto = canvas.getContext('2d');
const area = { izquierda: 60, derecha: 760, arriba: 40, base: 360 };
const escalaX = valor => area.izquierda + (valor - 25) / 200 * (area.derecha - area.izquierda);
const escalaY = valor => area.base - valor / 10 * (area.base - area.arriba);
const puntosCompletos = [
{ x: 25, y: 0 },
...puntos,
{ x: 225, y: 0 }
];
contexto.clearRect(0, 0, canvas.width, canvas.height);
contexto.fillStyle = '#fbfdff';
contexto.fillRect(0, 0, canvas.width, canvas.height);
contexto.fillStyle = '#17324d';
contexto.font = 'bold 18px Segoe UI, Arial';
contexto.fillText('Polígono de frecuencia', 22, 27);
// Cuadrícula y escala vertical.
contexto.font = '12px Segoe UI, Arial';
contexto.textAlign = 'right';
for (let frecuencia = 0; frecuencia <= 10; frecuencia += 2) {
const y = escalaY(frecuencia);
contexto.strokeStyle = '#d8e8f7';
contexto.lineWidth = 1;
contexto.beginPath();
contexto.moveTo(area.izquierda, y);
contexto.lineTo(area.derecha, y);
contexto.stroke();
contexto.fillStyle = '#28587d';
contexto.fillText(frecuencia, area.izquierda - 8, y + 4);
}
// Ejes y etiquetas.
contexto.strokeStyle = '#28587d';
contexto.lineWidth = 2;
contexto.beginPath();
contexto.moveTo(area.izquierda, area.arriba);
contexto.lineTo(area.izquierda, area.base);
contexto.lineTo(area.derecha, area.base);
contexto.stroke();
contexto.textAlign = 'center';
contexto.fillStyle = '#28587d';
[25, 50, 75, 100, 125, 150, 175, 200, 225].forEach(valor => {
contexto.fillText(valor, escalaX(valor), area.base + 19);
});
contexto.font = '13px Segoe UI, Arial';
contexto.fillText('Marca de clase', (area.izquierda + area.derecha) / 2, area.base + 42);
contexto.save();
contexto.translate(17, (area.arriba + area.base) / 2);
contexto.rotate(-Math.PI / 2);
contexto.fillText('Frecuencia', 0, 0);
contexto.restore();
// Segmentos del polígono, incluidos los extremos de frecuencia cero.
contexto.strokeStyle = '#f97316';
contexto.lineWidth = 3;
contexto.beginPath();
puntosCompletos.forEach((punto, indice) => {
const x = escalaX(punto.x);
const y = escalaY(punto.y);
if (indice === 0) contexto.moveTo(x, y);
else contexto.lineTo(x, y);
});
contexto.stroke();
// Puntos correspondientes a las marcas de clase.
puntos.forEach(punto => {
contexto.fillStyle = '#c2410c';
contexto.beginPath();
contexto.arc(escalaX(punto.x), escalaY(punto.y), 5, 0, Math.PI * 2);
contexto.fill();
});
}
El gráfico debe acompañarse de una tabla o resumen que indique las marcas, frecuencias, clase modal y tamaño de muestra.
Cuando se comparan series, no debe utilizarse solo color: también pueden aplicarse líneas continuas y discontinuas, símbolos diferentes y etiquetas directas.
El polígono de frecuencia transforma una distribución agrupada en una línea que conserva las posiciones centrales y las frecuencias de las clases. Es especialmente útil para reconocer formas y comparar grupos sobre una escala común.
En el próximo tema estudiaremos los gráficos circulares.