Ir al contenido
σestadistica.ar

Script

Gráficos con ggplot2 y matplotlib

Cuatro tipos de figura, una paleta sola, 300 dpi para imprimir. Y cada figura sale con la tabla de los números que dibuja.

Descargar

Proyecto en R y Python · ZIP · 41 KB

En R hace falta ggplot2; en Python, matplotlib. Nada más.

Así sale

Diagrama de caja del ingreso mensual del hogar en el grupo control y en el de tratamiento. Las dos cajas son verdes, la mediana es una línea blanca, los bigotes son grises y los atípicos son puntos rojos por encima de 1.250.000. El eje vertical va de 0 a 1.750.000 con los miles separados por punto.
El archivo caja-ingreso.png tal como lo deja el script con la base de ejemplo.Los colores son los del archivo, no los de esta página: la figura está pensada para un documento impreso, así que no cambia con el tema del sitio.

Al lado queda caja-ingreso.csv, con los números que la figura dibuja:

grupo,n,minimo,q1,mediana,q3,maximo,atipicos
Control,74,74166.220000,298462.547500,416383.820000,646336.135000,1089695.100000,3
Tratamiento,74,123720.930000,318813.360000,454648.645000,719045.332500,1272491.210000,4

Una figura sin su tabla es una afirmación sin fuente. Por eso el CSV no es un extra. Es lo que permite que alguien revise el número, que el pie de figura se escriba con datos y no de memoria, y que la figura se pueda rehacer en otra herramienta sin volver a calcular nada. En el ejemplo de arriba, el pie puede decir que el tratamiento tuvo una mediana de ingreso más alta sin que nadie tenga que medirla con la regla sobre la pantalla.

Qué dibuja

ArchivoParaCómo
barras-<var>Una categóricaOrdenada de mayor a menor, con el eje desde cero
histograma-<var>Una numéricaCon las clases de la regla de Freedman y Diaconis
caja-<var>Una numérica por grupoCon los atípicos a la vista, a 1,5 RIC
dispersion-<x>-<y>Dos numéricasCon la recta de mínimos cuadrados y su r

No hay que pedirlas una por una: el script lee el archivo de variables, mira qué tipo tiene cada una y dibuja lo que corresponde. Con la base de ejemplo salen nueve figuras. Cada una deja dos archivos en salidas/figuras/: el PNG a 300 dpi —2160 × 1200 píxeles, que entra a página completa sin pixelarse— y el CSV.

Las decisiones que toma sola

Cuántas clases tiene el histograma. La regla de Freedman y Diaconis, acotada entre 4 y 25, que es la misma que usa la calculadora de frecuencias del sitio. Así la figura y la tabla del informe no se contradicen, que es lo que pasa cuando una se hizo en R con las clases por omisión y la otra a mano en una planilla.

Qué es un atípico. Los que caen a más de 1,5 rangos intercuartílicos de los cuartiles, el criterio de Tukey. Los bigotes llegan hasta el dato más extremo que no es atípico, no hasta el mínimo y el máximo.

Cómo se escriben los números de los ejes. Miles con punto: 1.500.000, no 1.5e6. matplotlib abrevia los ejes grandes y R los escribe enteros; sin fijarlo, la misma figura sale distinta en cada idioma.

Lo que no hace

No hay tortas. Con más de dos o tres categorías, comparar ángulos es más difícil que comparar largos, y la torta obliga a leer las etiquetas para entender lo que unas barras dicen de un vistazo.

No hay colores decorativos. El acento verde es el que lleva el dato; los grises son andamiaje. El rojo aparece solo donde significa algo: los atípicos de la caja y la recta ajustada de la dispersión.

No hay ejes cortados en las barras: empiezan en cero, porque el largo de la barra es lo que se compara. En el histograma y la dispersión, en cambio, el eje se ajusta a los datos, que es lo correcto ahí.

Los dos idiomas

Las dos versiones escriben las mismas tablas, byte a byte: el verificador corre las dos y compara los diez archivos. Las imágenes no son idénticas —son dos motores de dibujo distintos, con tipografías distintas—, pero muestran los mismos números con los mismos colores y con la misma geometría. Eso obliga a fijar cosas que cada motor resuelve por su cuenta: el ancho de las cajas, por ejemplo, ggplot2 lo deja en la mitad de lo que le toca a cada grupo y matplotlib lo calcula según cuántos grupos haya. Sin fijarlo, la misma caja sale de un ancho en cada idioma.

Para cambiar los colores

Están todos en un solo lugar: PALETA, arriba de comun.R y de comun.py. Si tu facultad pide otra identidad, se cambia ahí y las nueve figuras salen con la paleta nueva.

Cómo está verificado

Corriéndolo: el verificador descomprime lo publicado, lo corre con Python y con R, exige que las tablas sean idénticas y compara cada número con una implementación aparte de las mismas reglas. De los PNG lee los píxeles: que midan 2160 × 1200, que el fondo sea el de la paleta y que el verde de acento esté ahí. Prueba además tres bases distintas: sin variable de grupo, con una sola numérica y con una variable que empuja el histograma contra el tope de 25 clases. Y comprueba esta página: que la tabla de más arriba sea el CSV que sale de correrlo, carácter por carácter, y que la figura que ves sea una figura del proyecto. Son 669 comprobaciones, y los doce sabotajes se detectan.