![Pgfplots: addplot3 の expandlimits=false の動作が一貫していない](https://rvso.com/image/353027/Pgfplots%3A%20addplot3%20%E3%81%AE%20expandlimits%3Dfalse%20%E3%81%AE%E5%8B%95%E4%BD%9C%E3%81%8C%E4%B8%80%E8%B2%AB%E3%81%97%E3%81%A6%E3%81%84%E3%81%AA%E3%81%84.png)
3D のものをプロットしてみます。定義enlargelimits=false
でキーを使用しpgfplotsset
、domain
-1:1 に制限します。
最初の関数をプロットすると、すべて正常に動作します。軸は正確に -1 から 1 まで達します。
しかし、別の画像に同じスタイルを使用すると、enlargelimits=false
効果がないようです。
なぜこのようなことが起こるのか、またこの動作を防ぐにはどうすればよいのかを誰か説明してもらえますか?
ムウェ
\documentclass{standalone}
\usepackage{pgfplots}
\pgfplotsset{%
shapefunctionaxis/.style={%
domain=-1.0:1.0,
domain y=-1.0:1.0,
enlargelimits=false,
axis equal,
xlabel=$\xi$,
ylabel=$\eta$,
zlabel=$N_{\i}$,
zlabel style={rotate=-90},
xtick distance={1.0},
ytick distance={1.0},
ztick distance={1.0},
view={25}{30},% default is {25}{30}, pgfplots manual section 4.11.1
}%
}
\begin{document}
% This works as expected:
\def\i{5}
\def\xii{0}
\def\etai{1.0}
% This does not work as expected:
%\def\i{4}
%\def\xii{-1.0}
%\def\etai{1.0}
\begin{tikzpicture}
\begin{axis}[
width=10cm,
shapefunctionaxis,
]
% Corner nodes
\ifnum\ifnum\i=1 1\else\ifnum\i=2 1\else\ifnum\i=3 1\else\ifnum\i=4 1\else0\fi\fi\fi\fi%
=1 %
\addplot3[surf]{0.25*(1.0+\xii*x)*(1.0+\etai*y)*(\xii*x+\etai*y-1)};
\else\fi
% xi-edge middle nodes
\ifnum\ifnum\i=5 1\else\ifnum\i=7 1\else0\fi\fi%
=1 %
\addplot3[surf]{0.5*(1.0-x*x)*(1.0+\etai*y)};
\else\fi
% eta-edge middle nodes
\ifnum\ifnum\i=6 1\else\ifnum\i=8 1\else0\fi\fi%
=1 %
\addplot3[surf]{0.5*(1.0+\xii*x)*(1.0-y*y)};
\else\fi
\end{axis}
\end{tikzpicture}
\end{document}
答え1
マニュアルによると
/pgfplots/axis equal={⟨true,false⟩}
(最初はfalse
)
各単位ベクトルは同じ長さに設定され、軸の寸法は一定のままです。その後、x と y の各単位のサイズ比は同じになります。
軸の制限は、スケーリング効果を補正するために拡大されます。
編集者:krtek
このオプションはunit rescale keep size=true
まさに正しいヒントでした。ありがとうございます。
\documentclass{standalone}
\usepackage{pgfplots}
\pgfplotsset{%
shapefunctionaxis/.style={%
domain=-1.0:1.0,
domain y=-1.0:1.0,
enlargelimits=false,
%axis equal,
unit rescale keep size=true,
xlabel=$\xi$,
ylabel=$\eta$,
zlabel=$N_{\i}$,
zlabel style={rotate=-90},
xtick distance={1.0},
ytick distance={1.0},
ztick distance={1.0},
view={25}{30},% default is {25}{30}, pgfplots manual section 4.11.1
}%
}
\begin{document}
% This works as expected:
%\def\i{5}
%\def\xii{0}
%\def\etai{1.0}
% These does not work as expected:
\def\i{4}
\def\xii{-1.0}
\def\etai{1.0}
\begin{tikzpicture}
\begin{axis}[
width=10cm,
shapefunctionaxis,
]
% Corner nodes
\ifnum\ifnum\i=1 1\else\ifnum\i=2 1\else\ifnum\i=3 1\else\ifnum\i=4 1\else0\fi\fi\fi\fi%
=1 %
\addplot3[surf]{0.25*(1.0+\xii*x)*(1.0+\etai*y)*(\xii*x+\etai*y-1)};
\else\fi
% xi-edge middle nodes
\ifnum\ifnum\i=5 1\else\ifnum\i=7 1\else0\fi\fi%
=1 %
\addplot3[surf]{0.5*(1.0-x*x)*(1.0+\etai*y)};
\else\fi
% eta-edge middle nodes
\ifnum\ifnum\i=6 1\else\ifnum\i=8 1\else0\fi\fi%
=1 %
\addplot3[surf]{0.5*(1.0+\xii*x)*(1.0-y*y)};
\else\fi
\end{axis}
\end{tikzpicture}
\end{document}