Para incluir una gráfica en LaTeX, bien podemos insertar una imagen que contenga la gráfica, pero lo más recomendable es elaborar el código en LaTeX para que la gráfica tenga la mayor calidad posible en el documento.
Para elaborar gráficas, diagramas, etc., en LaTeX utilizaremos el paquete tikz
.
Este paquete es el que prefiere el autor, aunque hay otros paquetes que realizan las mismas tareas, por ejemplo, el paquete pstricks
.
De cualquiera de los paquetes que sirven para elaborar gráficas en LaTeX puede encontrar manuales a través de Internet.
Entonces, para que los siguientes códigos puedan incluirse en su documento, usted debe incluir en el preámbulo el código:
\usepackage{tikz} |
El paquete tikz
define el ambiente tikzpicture
y la instrucción \tikz
. Si usted desea que el dibujo que genere aparezca dentro del párrafo donde se generó, utilice la instrucción. Si desea que aparezca en un nuevo párrafo, utilice el ambiente.
Por ejemplo, para incluir dentro del párrafo, se utilizó el siguiente código:
Por ejemplo, para incluir % \tikz \draw[red,fill=red] (0,0) circle (2pt); % dentro del párrafo, se utilizó ... |
Pero si usted desea que el dibujo quede en otro párrafo, es mejor utilizar el ambiente tikzpicture
, particularmente cuando se trata de muchas instrucciones. Por ejemplo:
Se obtuvo con el siguiente código:
\begin{center} \begin{tikzpicture} % dibujo un círculo sin relleno \draw[red] (0,0) circle (1cm); % dibujo un circulo con relleno \draw[blue,fill=blue!25] (4,0) circle (1cm); \end{tikzpicture} \end{center} |
donde hemos usado las siguientes instrucciones:
-
draw
Indica que debe dibujar las instrucciones de la línea actual. -
red
Indica que el dibujo de la línea de código actual debe colorearse de rojo. Otros colores disponibles son: azul (blue
), rosa (pink
), azul claro (cyan
), morado (violet
), verde (green
), amarillo (yellow
), negro (black
), gris (gray
), naranja (orange
), café (brown
), blanco (white
), entre otros. -
circle
Indica que se debe dibujar un círculo. Las primeras coordenadas corresponden al centro del círculo y el último argumento entre paréntesis corresponde al radio. Note que también requiere de unidades. -
fill
Indica que debe rellenarse el dibujo con el color indicado.
Observe que cada instrucción finaliza con un punto y coma (;
). Si no lo incluye LaTeX le indicará un error, tal vez que no puede terminar la instrucción, porque no le indican dónde termina.
Podemos generar otros dibujos en el párrafo usando la instrucción \tikz
como
\tikz \draw[blue,thick,fill=cyan] (0,0) parabola bend(0.2,0.2) (0.4,0); %(0,0) rectangle (0.25,0.25);
que se obtuvo con el siguiente código:
Podemos generar otros dibujos en el párrafo usando la instrucción \verb|\tikz| como \tikz \draw[blue,thick,fill=cyan] (0,0) parabola bend (0.2,0.2) (0.4,0); que se obtuvo con el siguiente... |
Cuando estemos estudiando geometría analítica o funciones vamos a estar ocupando continuamente los ejes coordenados. Por ejemplo, el siguiente código:
\begin{center} \begin{tikzpicture} % dibujo un cuadricula \draw[color=gray,help lines] (0,0) grid (5,5); % Dibujo los ejes... \draw[thick,->] (-0.5,0)--(5.5,0) node[right] {$x$}; % Eje x % Enumeración del eje x \foreach \x/\xtext in {1/1, 2/2, 3/3, 4/4, 5/5} \draw[shift={(\x,0)}] (0pt,2pt)--(0pt,-2pt) node[below] {$\xtext$}; % % % \draw[thick,->] (0,-0.5)--(0,5.5) node[above] {$y$}; % Eje y % Enumeración del eje y \foreach \y/\ytext in {1/1, 2/2, 3/3, 4/4, 5/5} \draw[shift={(0,\y)}] (2pt,0pt)--(-2pt,0pt) node[left] {$\ytext$}; \end{tikzpicture} \end{center} |
genera:
Las instrucciones que se utilizaron se describen a continuación:
-
grid
Permite elaborar cuadrículas. Se debe indicar las coordenadas del punto donde inicia (esquina inicial) y el punto donde termina (esquina final). -
node
Permite incluir un texto o símbolo en la gráfica. También se puede incluir una imagen cargada de un archivo. El nodo puede indicarse a la derecha (right
), izquierda (left
), arriba (above
) o debajo (below
). -
--
Esta instrucción indica que se debe dibujar un segmento de recta desde el punto inicial hasta el punto final. -
->
Indica que se desea una flecha al final del segmento de recta. Si se desea indicar que la flecha esté en el punto inicial la instrucción será:<-
. En caso de que deban aparecer en ambos extremos la instrucción es:<->
. -
thick
Indica que el segmento de recta debe ser grueso. También pueden ser: delgado (thin
), muy delgado (very thin
), muy grueso (very thick
), ultra grueso (ultra thick
) o ultra delgado (ultra thin
). -
shift
Indica que recorra (traslación) el dibujo generado por esa línea en las coordenadas indicadas en el argumento. -
\foreach
Ciclo que realiza la misma operación para todos los elementos del conjunto indicado entre llaves.
Otro ejemplo donde se modificaron los ejes para que se ajustaran a la gráfica que se desea explicar y se agregaron unas rectas, se muestra a continuación:
\begin{center} \begin{tikzpicture} \draw[blue,thick,->] (-2.5,0)--(5,0) node[right,below] {$x$}; % Eje x % Enumeración del eje x \foreach \x/\xtext in {-2/-2, -1/-1, 1/1, 2/2, 3/3, 4/4} \draw[shift={(\x,0)},blue] (0pt,2pt)--(0pt,-2pt) node[below] {$\xtext$}; % % Enumeración del eje y \foreach \y/\ytext in {-1/-1, 1/1, 2/2, 3/3, 4/4} \draw[shift={(0,\y)},blue] (2pt,0pt)--(-2pt,0pt) node[left] {$\ytext$}; \draw[blue,thick,->] (0,-2)--(0,4.25) node[left,above] {$y$}; % Eje y % \node[below] at (-0.25,0){$O$}; \draw[red,thick,<->] (-1,4) -- (4,-1); \node[color=red,right] at (4,-1) {$x+y=3$}; % \draw[red,thick,<->] (-1,-2) -- (4,3); \node[color=red,right] at (4,3) {$x-y=1$}; % \draw[fill=black] (2,1) circle (2pt); \end{tikzpicture} \end{center} |
y esto incluye en el documento lo siguiente:
Observe que en esta gráfica no aparece la cuadrícula porque no se ha incluido la instrucción grid
. Además de que los ejes se han dibujado de azul.
Para graficar una función podemos utilizar el siguiente código:
\begin{center} \begin{tikzpicture} \draw[very thin,color=gray] (-0.1,-1.1) grid (7,1.1); \draw[->] (-0.2,0) -- (7.5,0) node[right] {$x$}; \draw[->] (0,-1.2) -- (0,1.5) node[above] {$y$}; \draw[blue,thick,->] plot[domain=0:7] (\x,{sin(\x r)}) node[right] {$h(x) = \sin x$}; \draw[red,thick,->] plot[domain=0:6.35] (\x,{cos(\x r)}) node[above] {$g(x) = \cos x$}; \end{tikzpicture} \end{center} |
y esto incluye en el documento:
Algunas instrucciones nuevas de este ejemplo:
-
plot
indica que se graficará una función. -
domain
indica el rango de valores que se le asignará a la variable\x
que utiliza para hacer la gráfica de la función. -
\x
define la variable que usaremos para realizar los cálculos. -
{cos()}
Define la función que vamos a graficar. Igual para{sin()}
. -
(\x r)
Indica que el argumento debe estar medido en radianes.
Igual podemos graficar datos leídos desde un archivo de texto utilizando el siguiente código:
\begin{center} \begin{tikzpicture}%[scale=1.75] %%% Dibujo los ejes... \draw[very thin,help lines,step=0.5] (0,0) grid (6,6); % Eje horizontal \draw[thick,->,blue] (-0.25,0)--(6.25,0) node[right] {$t$}; \foreach \x/\xtext in {0/0, 1/100, 2/200, 3/300, 4/400, 5/500, 6/~} \draw[shift={(\x,0)}] (0pt,0.2pt)--(0pt,-0.2pt) node[blue,below] {$\xtext$}; %% Eje vertical \draw[thick,->,blue] (0,-0.05)--(0,6.5) node[above] {$P(t)$}; % Enumeración del eje y \foreach \y/\ytext in {1/10, 2/20, 3/30, 4/40, 5/50, 6/60} \draw[shift={(0,\y)}] (2pt,0pt)--(-2pt,0pt) node[blue,left] {$\ytext$}; % % Las gráficas de los datos \draw[thin,red] plot[smooth,mark=ball,mark size=0.5pt] file{popa.txt}; \draw[thin,blue] plot[smooth,mark=ball,mark size=0.5pt] file{popb.txt}; \draw[thin,green] plot[smooth,mark=ball,mark size=0.5pt] file{popc.txt}; \draw[thin,cyan] plot[smooth,mark=ball,mark size=0.5pt] file{popd.txt}; \draw[thin,brown] plot[smooth,mark=ball,mark size=0.5pt] file{pope.txt}; \end{tikzpicture} \end{center} |
y en el documento veremos lo siguiente:

Algunas instrucciones nuevas en el código para generar esta gráfica son:
-
mark
Indica que utilizará viñetas para indicar la ubicación de los puntos leídos. -
mark size
Indica el tamaño de cada viñeta. -
file
requiere del nombre del archivo (incluye extensión).
Los archivos de texto popa
, popb
, popc
, popd
y pope
contienen los datos que aparecen en las gráficas de distintos colores. Cada archivo contiene información como se muestra enseguida:
0.000000 4.900000 0.250000 5.000000 0.500000 5.100000 0.750000 4.800000 1.000000 5.600000 1.250000 6.000000 1.500000 5.700000 1.750000 5.200000 |
Así, usted puede utilizar otro programa para generar datos y graficarlos usando LaTeX. Por ejemplo, el software GnuPlot
es de distribución libre, y se diseñó para realizar gráficas principalmente.
El siguiente es un ejemplo del código utilizado para generar un archivo con datos que se desean graficar usando TikZ
en LaTeX:
gnuplot> set table "parabola.txt" gnuplot> plot [-3:3][0:100] x*x/8 gnuplot> unset table gnuplot> |
y después podemos graficar los datos generados en el archivo utilizando las instrucciones que se mostraron en el ejemplo de la última gráfica.
- La instrucción set table le indica a GnuPlot que abra un archivo con el nombre que se indica entre comillas.
- La instrucción plot sirve para graficar. Entre corchetes se indica primero los límites inferior y superior que asignará a
y después los que corresponden a
.
- Finalmente, le pedimos que cierre el archivo con la instrucción unset table.
Es importante mencionar que el archivo de texto debe estar en la misma carpeta donde se encuentra el código fuente de su documento en LaTeX para que pueda leerlo. Igual, si usted desea, puede programar en cualquier otro lenguaje de programación para generar el archivo de datos y utilizarlo para generar su gráfica.
El siguiente ejemplo consiste en un conjunto de 1500 números pseudo-aleatorios con distribución exponencial que se generaron con un programa codificado en el lenguaje de programación ANSI-C
:

La gráfica de estos datos se generaron con el siguiente código:
\begin{center} \begin{tikzpicture}[scale = 0.75] %%% Dibujo los ejes... \draw[thick,->,blue] (-0.25,0)--(16,0) node[right] {$N$}; % Eje x \foreach \x/\xtext in {0/0, 2/200, 5/500, 10/1000, 15/1500} \draw[shift={(\x,0)}] (0pt,2pt)--(0pt,-2pt) node[blue,below] {$\xtext$}; \draw[thick,->,blue] (0,-0.5)--(0,4.25);% node[right] {$y(t)$}; % Eje y \foreach \y/\ytext in {0/0, 1/1, 2/2, 3/3} % Enumeración del eje y \draw[shift={(0,\y)}] (2pt,0pt)--(-2pt,0pt) node[blue,left] {$\ytext$}; \draw[cyan] plot[ycomb] file{exponencial.txt}; % La gráfica de los datos \draw[very thin,help lines] (0,0) grid (15,4); \end{tikzpicture} \end{center} |
La instrucción opcional scale=0.75
le indica a LaTeX que reduzca la escala del dibujo a un 75% de su tamaño real. Otras figuras que sirven para explicar procesos también pueden ser diseñadas a través de TikZ
. Por ejemplo:
se obtiene con el código:
\begin{center} \tikzstyle{mi nodo}= [circle,draw,blue,fill=blue!15] \begin{tikzpicture}[scale=1.5,shorten >=1pt,node distance=1.5cm,auto] % \foreach \nodo/\angulo/\texto in {a/0/A, b/60/B, c/120/C, d/180/D, e/240/E, f/300/F} \node[mi nodo] (\nodo) at (\angulo:2cm) {$\texto$}; % Nodo central \node[mi nodo] (g) at (0cm:0cm) {$G$}; \foreach \origen/\destino in {a/b, b/c, c/d, d/e, e/f, a/f} \path[blue,thick] (\origen) edge node[above,sloped] {\footnotesize$p_{\origen\destino}$} (\destino); % \foreach \destino in {a, b, c, d, e, f} \path[blue,thick] (g) edge node[above,sloped] {\footnotesize $p_{\destino g}$} (\destino); % Ahora dibujo el camino más corto... \path[red,very thick] (a) edge node[above,sloped] {\footnotesize $p_{ab}$} (b); \path[red,very thick] (b) edge node[above,sloped] {\footnotesize $p_{bg}$} (g); \path[red,very thick] (g) edge node[above,sloped] {\footnotesize $p_{fg}$} (f); \path[red,very thick] (f) edge node[above,sloped] {\footnotesize $p_{ef}$} (e); \path[red,very thick] (e) edge node[above,sloped] {\footnotesize $p_{de}$} (d); \path[red,very thick] (d) edge node[above,sloped] {\footnotesize $p_{cd}$} (c); % \end{tikzpicture} \end{center} |
Podemos utilizar imágenes y encima de éstas dibujar otros trazos para resolver problemas. Por ejemplo, en el curso de Álgebra se utiliza:

que se obtuvo con el siguiente código:
\begin{center} \begin{tikzpicture} % Marco para la fotografia \draw[ultra thick,blue,fill=cyan!35] (0,0) rectangle (6.4,8); % Esta es una fotografía del autor del manual: \node at (3.2,4) {\includegraphics[width=4.4cm,height=6cm]{Efra.jpg}}; \draw[thick,<->,red] (0,4) -- (1,4) node [midway,below]{$x$}; \draw[thick,<->,red] (5.4,4) -- (6.4,4) node [midway,below]{$x$}; \draw[thick,<->,red] (3.2,0) -- (3.2,1) node [midway,below,rotate=90]{$x$}; \draw[thick,<->,red] (3.2,7) -- (3.2,8) node [midway,below,rotate=90]{$x$}; % undicando las medidas \draw[thick,<->,blue] (1,1.25) -- (5.4,1.25) node [midway,above]{$27$}; \draw[thick,<->,blue] (1.25,1) -- (1.25,7) node [midway,below,rotate=90]{$35$}; \end{tikzpicture} \end{center} |
Otro concepto muy frecuentemente usado en matemáticas son las sumatorias. Un gráfico que sirve de apoyo para explicar la suma:
es el siguiente (que se extrajo del libro titulado
que se obtiene con el siguiente código:
\begin{center} \begin{tikzpicture}[scale=0.75] % relleno para la cuadrícula de color amarillo \draw[yellow!10, fill = yellow!10] (0,0) rectangle (7,8); \draw[red,dotted] (0,0) grid (7,8); % Primeros escalones normales \draw[blue,thick,fill=blue!25] (0,0) rectangle (1,1); \draw[blue,thick,fill=blue!25] (1,0) rectangle (2,2); \draw[blue,thick,fill=blue!25] (2,0) rectangle (3,3); \draw[blue,thick,fill=blue!25] (3,0) rectangle (4,4); \draw[blue,thick,fill=blue!25] (4,0) rectangle (5,5); \draw[blue,thick,fill=blue!25] (5,0) rectangle (6,6); \draw[blue,thick,fill=blue!25] (6,0) rectangle (7,7); \draw [->](3,-0.35) -- (0,-0.35); \draw [->](4,-0.35) --(7,-0.35); \draw(-0.15,8) --(-0.55,8); % Para indicar el límite \draw(-0.15,1) --(-0.55,1); % Para indicar el límite \node[below] at (3.5,0) {$n$}; \draw [->](-0.35,4) -- (-0.35,1); \draw [->](-0.35,5) --(-0.35,8); \draw(7,-0.15) --(7,-0.55); % Para indicar el límite \draw(0,-0.15) --(0,-0.55); % Para indicar el límite \node[left] at (0,4.5) {$n$}; % \draw [->](7.8,3.5) -- (7.8,0); \draw [->](7.8,4.5) --(7.8,8); \node[right] at (7,4) {$n+1$}; \draw(7.25,8) --(8.35,8); % Para indicar el límite \draw(7.25,0) --(8.35,0); % Para indicar el límite % \node at (0.5,0.5) {1}; \node at (1.5,1) {2}; \node at (2.5,1.5) {3}; \node at (3.5,2) {4}; \node at (4.5,2.5) {$\cdots$}; \node at (6.5,3.5) {$n$}; \end{tikzpicture} \end{center} |
En el libro titulado
que se obtiene con el siguiente código:
\begin{center} \begin{tikzpicture} \draw[red!5,fill=yellow!15,rounded corners](-1,-1.25) rectangle (11,4); % Dibujo el Dominio + + + \fill[blue!15] (0,0) rectangle (4,2); \draw[color=blue,very thick] (0,0) rectangle (4,2); \node[color=red] at (2,1) {$x$}; \node[color=red,below] at (0.5,2) {$\mathbb{X}$}; % Dibujo el Contradominio + + + \fill[blue!15] (6,0) rectangle (10,2); \draw[color=blue,very thick] (6,0) rectangle (10,2); \node[color=red] at (8,1) {$f(x)$}; \node[color=red,below] at (6.5,2) {$\mathbb{Y}$}; % Dibujo las flechas + + + \draw[color=blue,very thick,->] (4.25,1)--(5.75,1); \node[color=red,above] at (5,1) {$f$}; \draw[color=cyan,very thick,->] (5,3)--(5,2); \node[above] at (5,3) {Función}; % Nombre de cada conjunto + + + \node[above] at (2,2) {Dominio}; \node[above] at (8,2) {Contradominio}; % + + + \node[right,text width=3.75cm,inner sep=1ex] at (0.25,-0.675) { \begin{center} Valores que le \\ damos a la función \end{center}}; % \draw[red,snake=brace] (4,-0.1) -- (0,-0.1); % + + + \node[right,text width=3.75cm,inner sep=1ex] at (6.25,-0.675) { \begin{center} Valores que nos \\ devuelve la función \end{center} }; % \draw[red,snake=brace] (10,-0.1) -- (6,-0.1); \end{tikzpicture} \end{center} |
Observe que utilizamos la instrucción: \draw[red,snake=brace]
para
dibujar una llave. Para que esta instrucción funcione necesitamos incluir en
el preámbulo del documento la instrucción:
\usetikzlibrary{snakes} |
que le indica a LaTeX que cargue la librería que define esa instrucción.
Otro dibujo sencillo que se utilizó en el curso de Cálculo Diferencial es el siguiente:
Que se obtuvo con el siguiente código:
\begin{center} \begin{tikzpicture} % Caras del cuerpo: \draw[red,thick,fill=red!15] (0,0) -- (5,0) -- (5,2) -- (0,2) -- (0,0) ; \draw[red,thick,fill=red!15] (5,0) -- (7,1) -- (7,3) -- (5,2) -- cycle; \draw[red,thick,fill=red!15] (5,2) -- (7,3) -- (2,3) -- (0,2) -- cycle; %%% Acotamientos [Horizontal] \draw[blue,->] (2.25,-0.2) -- (0,-0.2); \draw[blue,->] (2.75,-0.2) -- (5,-0.2); \node[blue,below] at (2.5,0){$x$}; %%% Acotamientos [Vertical] \draw[blue,->] (-0.25,0.75) -- (-0.25,0); \draw[blue,->] (-0.25,1.25) -- (-0.25,2); \node[blue,left] at (0,1){$y$}; \node[blue,below] at (6,0.5){$y$}; \draw[blue,->] (5.75,0.175) -- (5,-0.2); \draw[blue,->] (6.25,0.425) -- (7,0.8); \node[blue] at (2.5,1) {$V = x\cdot y^2$}; \end{tikzpicture} \end{center} |
Otros ejemplos
Hay una infinidad de conceptos matemáticos que se pueden explicar con el uso de figuras. Si usted elabora cada figura usando LaTeX, difícilmente alguien más podrá elaborar una de mejor calidad en diseño y tipografía.
Por ejemplo, para motivar el concepto de pendiente de una recta podemos utilizar el siguiente gráfico:
y después, para generalizar, podemos usar el siguiente:
Y con la ayuda de la fórmula:
explicar la interpretación geométrica y física de la pendiente de una recta.
La interpretación geométrica de las funciones trigonométricas se puede explicar usando el siguiente diagrama:
Otro concepto que se estudia en bachillerato y que puede generarse usando LaTeX es el de las cónicas. Empezamos dibujando el cono.
Aquí está la circunferencia:
Sigue la parábola:
Aquí está una elipse:
Ahora una hipérbola:
La suma de vectores se puede explicar con el siguiente diagrama:
Y este diagrama sirve para mostrar geométricamente que al multiplicar un renglón de una matríz cuadrada, su determinante queda multiplicado por el mismo escalar. De gran utilidad cuando se ha mostrado que un determinante de se representa geométricamente por un área.
Para explicar el concepto de límite o para aproximar el valor de , podemos usar las siguientes figuras que se
extrajeron del curso de Cálculo Diferencial:
Igual, para mostrar evidencia de algunos teoremas en cálculo, podemos usar la siguiente gráfica, extraída del mismo curso:
O la siguiente (obtenido del mismo curso):
Otro ejemplo más, de la misma referencia, que se utilizó para explicar la interpretación física y geométrica de la derivada es el siguiente:
Para explicar el ángulo entre dos curvas, en el curso de Cálculo Diferencial se utilizó:
Para explicar la solución de un problema (obtenida del curso de Geometría Analítica) se usó la siguiente gráfica:
Para explicar conductividad, campos eléctricos, diferencia de potencial, etc., sirve el siguiente diagrama:
Para explicar la suma: , en el libro titulado Enseñanza Efectiva de las Matemáticas se utilizó el siguiente diagrama:
Otra gráfica que sirvió en la solución de un problema en el curso de Geometría Analítica es:
Para obtener las siguientes gráficas el autor elaboró programas para calcular de manera automática coordenadas de los objetos que se grafican en cada una.
En el curso de Cálculo Diferencial, para explicar máximos y mínimos usando el criterio de la primera derivada el autor utilizó:
Y para explicar la concavidad:
Para explicar crecimiento y decrecimiento de funciones en el curso de Cálculo Diferencial utilizó:
Para explicar la definición de integral definida, el autor utilizó los siguientes gráficos en el curso de Cálculo Integral:
La idea que el autor desea divulgar con esta sesión es que con el uso del paquete TikZ
usted puede elaborar diagramas de muchos tipos y elaborar materiales con la apariencia de la mejor editorial profesional.
Se sugiere que busque un manual de uso del paquete TikZ
en Internet. De hecho, cuando se instala en su computadora este paquete se graba junto con él su manual, solo que debe buscarlo. Muy probablemente esté en:
C:\Program Files\MiKTeX\doc\generic\pgf |
En la galería de ejemplos de Tikz se encuentran muchos ejemplos del uso de este paquete.
Usted puede encontrar algunos materiales didácticos gratuitos diseñados por el autor de este tutorial en este mismo sitio de Internet.