Otra de las herramientas que se popularizaron con la ofimática son las hojas de cálculo. La primera, que a mediados de los 80 del siglo pasado, se convirtió en lo que ahora denominaríamos killer application fue Lotus 1-2-3. Y es un concepto muy sencillo que se puede utilizar para muchas cosas. De hecho se pueden hacer hojas que sustituirán a programas completos y las puede hacer cualquiera, sin necesidad de saber programar, habiendo comprendido sólo cómo funciona una hoja de cálculo.

El sistema es sencillo, una hoja se divide en columnas y filas formando celdas que por tanto se pueden señalar mediante la combinación de coordenadas. Esas celdas pueden contener datos directos, normalmente cadenas o números; o contener una fórmula que mostrará el resultado del cálculo correspondiente.

Cómo utilizar el modo tabla dentro de org-mode ya lo conté en el blog y no me gustaría repetirme. Pero algunas veces necesitas convertir en gráficos los datos que puedas manejar en esas tablas. Algo que las hojas de cálculo popularizaron fue la facilidad para mostrar los datos de forma gráfica.

Utilizo para los gráficos de este tipo y para dar un vistazo rápido gnuplot . Así por ejemplo, podemos ver que se pueden realizar gráficos mediante el siguiente código:

#+begin_src gnuplot :exports code :file formulas-plot.png reset set title "Cálculo de fórmulas" set xlabel "X" set xrange [-8:8] set xtics -8,2,8 set ylabel "Y" set yrange [-20:70] set ytics -20,10,70 f(x) = x**2 g(x) = x**3 h(x) = 10*sqrt(abs(x)) plot f(x) w l lw 1, g(x) w l lw 2, h(x) w l lw 3 #+end_src

Y genera un gráfico tal que:

Pero también podemos generar gráficos a partir de tablas como por ejemplo:

#+tblname: plot-basico | x | y1 | y2 | |-----+------------+------------| | 0.1 | 0.425 | 0.375 | | 0.2 | 0.3125 | 0.3375 | | 0.3 | 0.24999993 | 0.28333338 | | 0.4 | 0.275 | 0.28125 | | 0.5 | 0.26 | 0.27 | | 0.6 | 0.25833338 | 0.24999993 | | 0.7 | 0.24642845 | 0.23928553 | | 0.8 | 0.23125 | 0.2375 | | 0.9 | 0.23333323 | 0.2333332 | | 1 | 0.2225 | 0.22 | #+begin_src gnuplot :var data=plot-basico :exports code :file tabla-plot.png set title "Dibujo de una tabla" set xlabel "X" set xrange [0:1] set xtics 0,0.1,1 set ylabel "Y" set yrange [0.2:0.5] set ytics 0.2,0.05,0.5 plot data u 1:2 w l lw 2 title 'y1', \ data u 1:3 w lp lw 1 title 'y2' #+end_src

Dibuja un gráfico así:

No voy a profundizar mucho más en gnuplot , porque para eso está su página web y seguro que lo explican allí mejor de lo que puedo hacerlo yo en un apartado de un artículo.

La otra característica que aporta la hoja de cálculo, que es la de sustituir la programación en base a complejas relaciones entre celdas, fórmulas, líneas y columnas, añadiendo además una amplia librería de funciones para ello, en mi caso ya he demostrado que lo compenso con creces con elisp. Vale sí, es programar pero por eso permite hacer muchas cosas más.