座標系 axis cs を使用して、軸環境内でスコープを使用する tikz-draw を配置します。

座標系 axis cs を使用して、軸環境内でスコープを使用する tikz-draw を配置します。

問題:座標系 axis 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) で設定されていることがわかります。次に、実際の実装ではいくつかのグラフを持つ axis 環境があります。軸環境からのグラフと何らかの形で関連する同じ場所に、座標 (car1) を介して tikz-draw を配置する必要があります。現在、試行錯誤のアプローチで、tikz-draw を目的の場所に配置するのにかなり時間がかかっています。

私は、tikz-drawに関連するコードブロックをaxis環境内に配置し、軸 cstikz-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} [rotate around={-25:(car1)}]

したがって、私の質問は、この問題をどのように回避するかということです。

ありがとう。

答え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}

関連情報