![Pgfplots: addplot3 일관되지 않은 동작에서 확대 제한=false](https://rvso.com/image/353027/Pgfplots%3A%20addplot3%20%EC%9D%BC%EA%B4%80%EB%90%98%EC%A7%80%20%EC%95%8A%EC%9D%80%20%EB%8F%99%EC%9E%91%EC%97%90%EC%84%9C%20%ED%99%95%EB%8C%80%20%EC%A0%9C%ED%95%9C%3Dfalse.png)
나는 3D 물건을 계획하려고합니다. 나는 정의 enlargelimits=false
에 키를 사용하고 -1:1로 pgfplotsset
제한합니다 .domain
첫 번째 함수를 그릴 때 모든 것이 잘 작동합니다. 축은 정확히 -1에서 1까지 도달합니다.
enlargelimits=false
그러나 다른 사진에 동일한 스타일을 사용하면 아무런 효과가 없는 것 같습니다 .
이것이 왜 발생하는지 그리고 이 동작을 방지하기 위해 무엇을 할 수 있는지 설명할 수 있습니까?
MWE
\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}