Pestañas

viernes, noviembre 21, 2014

Cómo escribir los símbolos de las gráficas en LaTeX

Uno de los problemas al escribir textos científicos y las gráficas correspondientes es dónde narices poner la llamada «leyenda». Es decir, en las gráficas hay una serie de símbolos que representan los diferentes datos que hemos calculado o medido, pero ¿dónde los pongo? Si los coloco dentro de la figura apenas se verán, no se podrá poner otra cosa y queda estéticamente bastante feo. ¿Qué hacer entonces?

Una solución a este tremendo problema que nos quita a todos el sueño es colocar la explicación de qué es cada símbolo en el pie de figura o "caption". Es decir, hacer la «leyenda» en el propio texto del documento. El problema ahora es que si nuestros símbolos son un poco raros, tales como cuadrados rellenos de colores, pues la cosa se complica, porque no hay nada de esos por defecto en los editores, y menos en LaTeX.

Buscando un poco (ahora mismo no recuerdo donde encontré la información, probablemente aquí) conseguí montar unos «macros» para LaTeX que permiten dibujar estos símbolos dentro del documento. Para ello, primero tenemos que usar los paquetes adecuados, así que hay que incluir, antes de \begin{document}, los paquetes siguientes:

\usetikzlibrary{shapes} \usepackage{tikz} \usepackage{pgfplots}

Aunque a mí todo esto me funciona sin las dos primeras librerías. Después añadimos el siguiente código: 

\newcommand*{\tikzbullet}[2]{ \setbox0=\hbox{\strut} \begin{tikzpicture} \filldraw[draw=#1,fill=#2] (0,3\ht0) circle[radius=.25em]; \end{tikzpicture} } 

\newcommand*{\tikzrectangle}[2]{ \setbox0=\hbox{\strut} \begin{tikzpicture} \filldraw[draw=#1,fill=#2] (0,3\ht0) rectangle ++(5pt,5pt); \end{tikzpicture} } 

\newcommand*{\tikztriangle}[2]{ \setbox0=\hbox{\strut} \begin{tikzpicture} \node[draw=#1,fill=#2,regular polygon, regular polygon sides=3,inner sep=1.3pt] at (5cm,0) {}; \end{tikzpicture} } 

\newcommand*{\tikzline}[1]{ \setbox0=\hbox{\strut} \begin{tikzpicture} \useasboundingbox (-0.2em,-0.2em) rectangle (1.8em,\ht0); \draw[color=#1,solid,line width=0.5pt](0,0) -- (5mm,0); \end{tikzpicture} } 

\newcommand*{\tikzdashedline}[1]{ \setbox0=\hbox{\strut} \begin{tikzpicture} \useasboundingbox (-0.2em,-0.2em) rectangle (1.8em,\ht0); \draw[color=#1,dashed,line width=0.5pt](0,0) -- (5mm,0) {}; \end{tikzpicture} } 

Y con esto tenemos lo necesario para pintar líneas continuas (tikzline), lineas discontinuas (tikzdashedline), círculos (tikzbullet), cuadrados (tikzrectangle) y triángulos (tikztriangle). Las líneas admiten un color como argumento, así que si escribimos \protect\tikzline{black} obtendremos un dibujito de una línea negra (no me pregunten por qué hay que poner \protect, pero hay que hacerlo). Para los símbolos tenemos dos argumentos: el primero es el color del borde y el segundo el color del área interior. Si escribimos \protect\tikzrectangle{black}{green} tendremos cuadrados de borde negro rellenos de color verde. Etcétera.

Finalmente, como ejemplo, os pongo aquí un texto serio que he escrito para la ocasión donde puede verse el resultado de las macros en LaTeX (lean el pie de la figura): 
 
(Pinchar para ver más grande)