LaTeX para profes: gráfica de concentraciones con pgfplots

📆 5 de julio de 2019 | 📖 3 minutos | 🏷️ docencialatex

Para uno de los exámenes quería incluir una gráfica de saturación sobre la que los alumnos tuvieran que hacer algunos cálculos. En vez de buscar una por internet e incluirla como imagen opté por hacerla utilizando pgfplots.

Ya vimos en otro post como incluir un eje de coordenadas con tikzpicture y pgfplots. En este caso, vamos ha empezar con algo parecido y luego añadiremos lo que lo hace un poco diferente.

Para que los ejes sean proporcionales añadimos el parámetro unit vector ratio*= 1 1 1 y defino los rangos de ambos ejes y los ticks principales

unit vector ratio*= 1 1 1

xmax=100,xmin=0,
ymax=100,ymin=0,

xtick={0,20,40,60,80,100},
ytick={0,20,40,60,80,100},

Para facilitar los cálculos añado ticks secundarios en ambos ejes con minor tick num=3. Esto hace que se forme una cuadrícula que sirve de guía para calcular los valores. Para saber cuántos ticks hay que incluir se divide la distancia entre ticks principales por la distancia entre ticks secundarios y a ese valor le restamos 1. En mi caso 20 entre 5 da 4, por lo que dejo como valor 3.

minor tick num=3,

Con esto tendríamos los ejes con sus respectivas marcas:

Ejes de la gráfica
Ejes de la gráfica

Para completar los ejes se añaden las etiquetas. En mi caso utilizo el paquete siunitx para las unidades del Sistema Internacional, por eso aparecen cosas como \si{\celsius}.

xlabel={Temperatura (\si{\celsius})},
ylabel={Coeficiente de solubilidad \\(\si{g/100~g} de agua)},
ylabel near ticks,
ylabel style={align=center},
xlabel near ticks,

En conjunto la definición de los ejes quedaría más o menos así

[grid=both,
unit vector ratio*=1 1 1,
axis x line=bottom,
axis y line=left,
axis line style=thick,
xmax=100,xmin=0,
ymax=100,ymin=0,
xtick={0,20,40,60,80,100},
ytick={0,20,40,60,80,100},
minor tick num=3, 	% <-- Número de ticks pequeños entre ticks principales
xlabel={Temperatura (\si{\celsius})},
ylabel={Coeficiente de solubilidad \\(\si{g/100~g} de agua)},
ylabel near ticks,
ylabel style={align=center},
xlabel near ticks,
]
Gráfica con las etiquetas
Gráfica con las etiquetas

Para la gráfica he calculado unos valores que permitan dibujar la línea de la forma más adecuada. Si no tienes muchos valores es apropiado añadir el parámetro smooth pero hay que tener cuidado porque al suavizar la gráfica podría dejar de ser realista.

Se puede cambiar la gráfica de color pero como los exámenes se fotocopian es más seguro optar por el negro.

\addplot[draw, smooth, dashed, thick] coordinates {(0,15) (25,25) (60,40) (100,50)};

Por último añado una etiqueta a la gráfica. Para utilizar las coordenadas de la gráfica a la hora de colocar el nodo hay que definir las coordenadas como

\node at (axis cs:80,55) {\ce{NaOH}};

El resultado final es

Resultado final
Resultado final

Y el código que lo genera es:

\begin{center}
	\begin{tikzpicture}
	\begin{axis}[grid=both,
	unit vector ratio*=1 1 1, % <-- Hace que la distancia entre ticks sea la misma en ambos ejes
	axis x line=bottom,
	axis y line=left,
	axis line style=thick,
	xmax=100,xmin=0,
	ymax=100,ymin=0,
	xtick={0,20,40,60,80,100},
	ytick={0,20,40,60,80,100},
	minor tick num=3, % <-- Número de ticks pequeños entre ticks principales
	xlabel={Temperatura (\si{\celsius})},
	ylabel={Coeficiente de solubilidad \\(\si{g/100~g} de agua)},
	ylabel near ticks,
	ylabel style={align=center},
	xlabel near ticks,
	]
	
	\addplot[draw, smooth, dashed, thick] coordinates {(0,15) (25,25) (60,40) (100,50)};
	\node at (axis cs:80,55) {\ce{NaOH}};	
	\end{axis}
	\end{tikzpicture}
\end{center}

Creo que la gráfica se ve mejor que cuando se inserta una imagen, que puede quedar pixelada, pero también es verdad que eso no va a hacer que aprueben más alumnos.

Espero que te sirva de ayuda. Un saludo.

Puedes compartirlo si te gustó

También puedes dejar un comentario

Comentarios vía Talkyard.