좌표계 축 cs를 사용하여 축 환경 내부에서 범위를 사용하는 tikz-draw를 배치합니다.

좌표계 축 cs를 사용하여 축 환경 내부에서 범위를 사용하는 tikz-draw를 배치합니다.

문제:좌표계 축 cs를 사용하여 축 환경 내부에서 범위를 사용하는 tikz-draw를 배치합니다.

문제는 현재 구현된 좋은 솔루션이 아닌 다음 코드 이전에 더 잘 설명됩니다.

\documentclass[12pt]{report}
\usepackage[portuges, brazilian]{babel} % Hiphenação em portugues
\usepackage{graphics} % Suporte padrão para gráficos
\usepackage{tikz}
\usetikzlibrary{calc}
\usepackage{pgfplots}
\pgfplotsset{grid=major,compat=1.11}

\begin{document}
\begin{figure}[!htb]
\centering
\begin{tikzpicture}

\pgfmathsetmacro{\Ffactor}{0.6}
\coordinate (car1) at (0.50,1.95);
\begin{scope} [rotate around={-25:(car1)}]
\draw[fill=yellow]     (car1) +  ($\Ffactor*(-0.250, 0.100)$) rectangle + ($\Ffactor*(0.250,-0.100)$);
\draw[fill=black]      (car1) ++ ($\Ffactor*(-0.250, 0.100)$) rectangle + ($\Ffactor*( 0.175, 0.075)$); % rear left wheel
\draw[fill=black]      (car1) ++ ($\Ffactor*( 0.250, 0.100)$) rectangle + ($\Ffactor*(-0.175, 0.075)$); % front left wheel
\draw[fill=black]      (car1) ++ ($\Ffactor*( 0.250,-0.100)$) rectangle + ($\Ffactor*(-0.175,-0.075)$); % front right wheel
\draw[fill=black]      (car1) ++ ($\Ffactor*(-0.250,-0.100)$) rectangle + ($\Ffactor*( 0.175,-0.075)$); % rear right wheel
\end{scope}

\begin{axis}[ ]
%
% SOME CODES
%
\end{axis}

\end{tikzpicture} %
\end{figure}
\end{document}

코드에서 언급된 tikz-draw가 코드의 첫 번째 블록에 의해 지정되고 해당 위치가 좌표(car1)에 의해 설정되는 것을 볼 수 있습니다. 순서대로 실제 구현에는 일부 그래프가 있는 축 환경이 있습니다. 좌표(car1)를 통해 축 환경의 그래프와 어떤 방식으로든 관련된 동일한 위치에 tikz-draw를 배치해야 합니다. 현재는 시도 및 오류 접근 방식으로 tikz-draw를 원하는 위치에 배치하는 데 꽤 시간이 걸립니다.

저는 tikz-draw와 관련된 코드 블록을 축 환경에 넣고 다음을 사용하는 것이 가능할 것이라고 생각했습니다.축 CS다음과 같이 tikz-draw 위치를 설정하는 좌표 프레임

\begin{tikzpicture}
\begin{axis}[ ]
%
% SOME CODES
%
\pgfmathsetmacro{\Ffactor}{0.6}
\coordinate (car1) at (axis cs: 0.50,1.95);  <----------
\begin{scope} [rotate around={-25:(car1)}]
\draw[fill=yellow]     (car1) +  ($\Ffactor*(-0.250, 0.100)$) rectangle + ($\Ffactor*(0.250,-0.100)$);
\draw[fill=black]      (car1) ++ ($\Ffactor*(-0.250, 0.100)$) rectangle + ($\Ffactor*( 0.175, 0.075)$); % rear left wheel
\draw[fill=black]      (car1) ++ ($\Ffactor*( 0.250, 0.100)$) rectangle + ($\Ffactor*(-0.175, 0.075)$); % front left wheel
\draw[fill=black]      (car1) ++ ($\Ffactor*( 0.250,-0.100)$) rectangle + ($\Ffactor*(-0.175,-0.075)$); % front right wheel
\draw[fill=black]      (car1) ++ ($\Ffactor*(-0.250,-0.100)$) rectangle + ($\Ffactor*( 0.175,-0.075)$); % rear right wheel
\end{scope}
%
% SOME CODE
%
\end{axis}

\end{tikzpicture} %

그러나 놀랍게도 이 새로운 솔루션은 오류를 검색하기 때문에 축과 범위 환경 사이에 약간의 비호환성이 있는 것으로 보입니다.

패키지 pgf 오류: car1이라는 모양이 알려져 있지 않습니다. \begin{scope} [rotate around={-25:(car1)}] 패키지 pgf 오류: car1이라는 모양이 알려져 있지 않습니다. \begin{scope} [회전={-25:(자동차1)}]

따라서 내 질문은 이 문제를 해결하는 방법입니다.

감사해요.

답변1

\coordinate안쪽에 를 넣고 axis뒤에 scope를 넣으세요 \end{axis}.

여기에 이미지 설명을 입력하세요

\documentclass[12pt]{report}
\usepackage[portuges, brazilian]{babel} % Hiphenação em portugues
\usepackage{graphicx} % Suporte padrão para gráficos
\usepackage{tikz}
\usetikzlibrary{calc}
\usepackage{pgfplots}
\pgfplotsset{grid=major,compat=1.11}

\begin{document}
\begin{figure}[!htb]
\centering
\begin{tikzpicture}
\pgfmathsetmacro{\Ffactor}{0.6}
\begin{axis}[ ]
%
\coordinate (car1) at (0.5,0.5); % axis cs is default since you have compat=1.11
\addplot coordinates {(0,0)}; % need to have something, or it doesn't work
\end{axis}

\begin{scope} [rotate around={-25:(car1)}]
\draw[fill=yellow]     (car1) +  ($\Ffactor*(-0.250, 0.100)$) rectangle + ($\Ffactor*(0.250,-0.100)$);
\draw[fill=black]      (car1) ++ ($\Ffactor*(-0.250, 0.100)$) rectangle + ($\Ffactor*( 0.175, 0.075)$); % rear left wheel
\draw[fill=black]      (car1) ++ ($\Ffactor*( 0.250, 0.100)$) rectangle + ($\Ffactor*(-0.175, 0.075)$); % front left wheel
\draw[fill=black]      (car1) ++ ($\Ffactor*( 0.250,-0.100)$) rectangle + ($\Ffactor*(-0.175,-0.075)$); % front right wheel
\draw[fill=black]      (car1) ++ ($\Ffactor*(-0.250,-0.100)$) rectangle + ($\Ffactor*( 0.175,-0.075)$); % rear right wheel
\end{scope}
%
\end{tikzpicture} %
\end{figure}
\end{document}

관련 정보