仅绘制点 x^2+y^2=

仅绘制点 x^2+y^2=

我只想为点 x^2+y^2=<1 绘制函数 f(x,y)=x^2-y^2,如果可能的话,其余点的填充不透明度为 0.4。

\documentclass[border=10pt]{standalone}
\usepackage{pgfplots}
\usepackage{tikz}
\pgfplotsset{every axis/.style={scale only axis}}
\begin{document}
    \begin{tikzpicture}
    \begin{axis}[unit vector ratio*=1 1 1,
    title={$f(x,y)=x^2-y^2$}, 
    xlabel=$x$, ylabel=$y$,
    xmin=-1, xmax=1,
    ymin=-1, ymax=1,
    zmin=-1, zmax=1,
    3d box=complete,]
    \addplot3[surf, domain=-1:1] 
    {x^2-y^2};
    \end{axis}
    \end{tikzpicture}
\end{document}

答案1

约束x^2+y^2\le 1只是意味着您想要绘制单位圆内的值x和函数y。这建议切换到极坐标。

\documentclass[border=10pt]{standalone}
\usepackage{pgfplots}
\usepackage{tikz}
\pgfplotsset{every axis/.style={scale only axis}}
\begin{document}
    \begin{tikzpicture}
    \begin{axis}[unit vector ratio*=1 1 1,
    title={$f(x,y)=x^2-y^2$}, 
    xlabel=$x$, ylabel=$y$, 
    xmin=-1, xmax=1,
    ymin=-1, ymax=1,
    zmin=-1, zmax=1,
    3d box=complete,samples=30]
    \addplot3[surf,domain=0:sqrt(2),y domain=0:2*pi,opacity=0.4] 
    ({x*cos(deg(y)},{x*sin(deg(y)},{(x*cos(deg(y))^2-(x*sin(deg(y))^2});
    \addplot3[surf,domain=0:1,y domain=0:2*pi] 
    ({x*cos(deg(y)},{x*sin(deg(y)},{(x*cos(deg(y))^2-(x*sin(deg(y))^2});
    \end{axis}
    \end{tikzpicture}
\end{document}

在此处输入图片描述

更新:为了完整性:没有极坐标。

\documentclass[border=10pt]{standalone}
\usepackage{pgfplots}
\pgfplotsset{compat=1.15}
\usepackage{tikz}
\pgfplotsset{every axis/.style={scale only axis}}
\begin{document}
    \begin{tikzpicture}
    \begin{axis}[unit vector ratio*=1 1 1,
    title={$f(x,y)=x^2-y^2$}, 
    xlabel=$x$, ylabel=$y$,
    xmin=-1, xmax=1,
    ymin=-1, ymax=1,
    zmin=-1, zmax=1,
    3d box=complete,%point meta=sqrt(x^2+y^2)
        ]
    \addplot3[surf, domain=-1:1, opacity=0.4]{x^2-y^2};
    \addplot3[surf, domain=-1:1, point meta={  abs(x^2+y^2)>1 ? nan : z
        }]{x^2-y^2};
    \end{axis}
    \end{tikzpicture}
\end{document}

在此处输入图片描述

在这两个例子中,你可以进行一些调整,samples让情节变得更加流畅。

相关内容