
Parece que no tengo problemas para colocar una coordenada en el sistema de coordenadas del eje, y la traducción en la dirección x también parece funcionar como se esperaba. Pero tan pronto como intento traducir en la dirección y, el resultado me desconcierta:
\documentclass{article}
\usepackage{pgfplots}
\usetikzlibrary{calc}
\begin{document}
\begin{tikzpicture}
\begin{axis}[grid=major,]
\addplot plot coordinates{(1800,2.14) (1860,2.18)};
\coordinate (bottomLeft) at (axis cs:1800,2.14);
\coordinate (bottomRight) at ($(bottomLeft) + (30,0)$);
\draw (bottomLeft) -- (bottomRight);
\coordinate (topLeft) at ($(bottomLeft) + (0,0.02)$);
\coordinate (topRight) at ($(topLeft) + (20,0)$);
\draw[red,thick] (topLeft) -- (topRight);
\end{axis}
\end{tikzpicture}
\end{document}
genera
y muestra que traduje en la dirección x ambas veces, pero la traducción y por (0,0.02) no se calcula como esperaba: quería una coordenada en (1800,2.16). Puedes saltar al final ahora a menos que quieras ver mi solución de problemas que no funcionó.
Descubrí que se está realizando un cálculo con
\documentclass{article}
\usepackage{pgfplots}
\usetikzlibrary{calc}
\begin{document}
\begin{tikzpicture}
\begin{axis}[grid=major,]
\addplot plot coordinates{(1800,2.14) (1860,2.18)};
\coordinate (bottomLeft) at (axis cs:1800,2.14);
\draw[purple] ($(bottomLeft) + (0,0.2)$) circle (0.3cm);
\filldraw[purple] ($(bottomLeft) + (0,10)$) circle (0.3cm);
\end{axis}
\end{tikzpicture}
\end{document}
porque pude trasladar en la dirección y; simplemente no parece trasladarse en el eje cs de la misma manera que lo haría en la dirección x:
El círculo abierto no parecía trasladado en absoluto, pero tras un examen más detenido, obtuve el círculo relleno para trasladarlo (una distancia aparentemente no relacionada con el eje cs). Pensé que tal vez el eje y se manejaría de manera diferente que el eje x, así que intenté especificar el eje cs nuevamente:
\documentclass{article}
\usepackage{pgfplots}
\usetikzlibrary{calc}
\begin{document}
\begin{tikzpicture}
\begin{axis}[grid=major,]
\addplot plot coordinates{(600,1) (1800,2.14) (1860,2.18)};
\coordinate (bottomLeft) at (axis cs:1800,2.14);
\coordinate (test) at ($(bottomLeft) + (axis cs:0,0.2)$);
\draw[thick,purple] (test) circle (0.3cm);
\draw[thick] (bottomLeft) -- (test);
\end{axis}
\end{tikzpicture}
\end{document}
pero cambiar la escala (cambiando el punto inferior izquierdo) muestra que (prueba) no permanece en el mismo lugar en relación con el eje cs:
Intenté especificar el eje cs para todo el cálculo y con diferentes ubicaciones de corchetes, pero ninguno se compiló.
\documentclass{article}
\usepackage{pgfplots}
\usetikzlibrary{calc}
\begin{document}
\begin{tikzpicture}
\begin{axis}[grid=major,]
\addplot plot coordinates{(800,1) (1800,2.14) (1860,2.18)};
\coordinate (bottomLeft) at (axis cs:1800,2.14);
%\coordinate (test) at (axis cs:$(bottomLeft) + (0,0.2)$);%didn't compile
%\coordinate (test) at (axis cs:{$(bottomLeft) + (0,0.2)$});%didn't compile
%\coordinate (test) at (axis cs:$(bottomLeft) + {(0,0.2)}$);%didn't compile
%\coordinate (test) at (axis cs:${(bottomLeft) + (0,0.2)}$);%didn't compile
\coordinate (translation) at (axis cs:0,0.2);
\coordinate (test) at ($(bottomLeft) + (translation)$);
\draw[thick,purple] (test) circle (0.3cm);
\draw[thick] (bottomLeft) -- (test);
\end{axis}
\end{tikzpicture}
\end{document}
Cuando intenté crear ambas coordenadas antes del cálculo, (prueba) todavía no parece moverse con el eje cs:
¿Alguien sabe cómo puedo calcular una ubicación de coordenadas utilizando otras dos coordenadas que se han definido en el sistema de coordenadas del eje?
Respuesta1
Como se indica en el pgfplots
manual:
Como se indica en la documentación de
axis cs
, agregar dos coordenadas mediante el++
operador TikZ1puede tener efectos inesperados. La forma correcta de++
realizar las operaciones esaxis direction cs
.
1Si bien no lo estás usando estrictamente ++
aquí, +
desde la calc
biblioteca es efectivamente lo mismo en lo que a esto se refiere.
Para realizar una transformación de coordenadas relativas, utilice axis direction cs
en lugar de axis cs
:
\documentclass{standalone}
\usepackage{pgfplots}
\pgfplotsset{compat=1.12}
\usetikzlibrary{calc}
\begin{document}
\begin{tikzpicture}
\begin{axis}[grid=major,]
\addplot plot coordinates{(1800,2.14) (1860,2.18)};
\coordinate (bottomLeft) at (axis cs:1800,2.14);
\coordinate (bottomRight) at ($(bottomLeft) + (axis direction cs:30,0)$);
\draw (bottomLeft) -- (bottomRight);
\coordinate (topLeft) at ($(bottomLeft) + (axis direction cs:0,0.02)$);
\coordinate (topRight) at ($(topLeft) + (axis direction cs:20,0)$);
\draw[red,thick] (topLeft) -- (topRight);
\end{axis}
\end{tikzpicture}
\end{document}