Pgfplots:addplot3 中的擴大限制=假不一致的行為

Pgfplots:addplot3 中的擴大限制=假不一致的行為

我嘗試繪製一些 3D 內容。我在定義中使用enlargelimits=falsekeypgfplotsset並將其限制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}

在此輸入影像描述

相關內容