使用 pgfplots 在三角域上绘制函数

使用 pgfplots 在三角域上绘制函数

我想使用 tikz 在三角域上绘制一个函数。例如,我想在 (-1, -1) -- (-1, 1) -- (1, -1) 上绘制函数 x*y。

这是矩形域 (-1, 1) x (-1, 1) 的 MWE。

\documentclass[10pt]{article}
\usepackage{pgfplots}
\pgfplotsset{compat=newest}
\begin{document}
\begin{tikzpicture}
\begin{axis}[xlabel=$x$,ylabel=$y$,small,view={120}{40}]
\addplot3[surf,domain=-1:1,domain y=-1:1] {x*y};
\end{axis}
\end{tikzpicture}
\end{document}

我怎样才能仅在域的三角形部分上绘制此函数?

干杯


谢谢您的回复。

一个后续问题:我注意到,当使用 addplot3 剪辑多个函数时,根据视图的不同,绘图经常会消失。例如考虑

\documentclass[10pt]{article}
\usepackage{pgfplots}
\pgfplotsset{compat=newest}
\begin{document}
\begin{tikzpicture}
\begin{axis}[xlabel=$x$,ylabel=$y$,small,view={-45}{10},zmin=-1,zmax=1]
\clip (axis cs:-1,-1) -- (axis cs:1,1) -- (axis cs:-1,1) -- cycle;
\addplot3[surf,domain=-1:1,domain y=-1:1,color=gray,faceted color=black,opacity=0.05] {x*y};
\addplot3[surf,domain=-1:1,domain y=-1:1,color=red,faceted color=red,opacity=0.05] {(2*x*x+2*x+2*y*y-2*y)/(2*x-2*y+4)};
\addplot3[patch,patch type=triangle,color=blue,faceted color=blue,fill opacity=0.2] coordinates {(-1,-1,1) (1,1,1) (-1,1,-1)};
\end{axis}
\end{tikzpicture}
\end{document}

如果我改变

view={-45}{10}

view={0}{90}

您可以看到图表。但是,使用上述视图,您看不到图表。这是为什么呢?

干杯

答案1

一种方法是绘制曲线,然后将其剪裁为

\clip  (-1, -1) -- (-1, 1) -- (1, -1) -- cycle;
\addplot3[surf,domain=-1:1,y domain=-1:1] {x*y};

在此处输入图片描述

\documentclass[10pt]{article}
\usepackage{pgfplots}
\pgfplotsset{compat=newest}
\begin{document}
\begin{tikzpicture}
\begin{axis}[xlabel=$x$,ylabel=$y$,small,view={120}{40}]
\clip  (-1, -1) -- (-1, 1) -- (1, -1) -- cycle;
\addplot3[surf,domain=-1:1,y domain=-1:1] {x*y};
\end{axis}
\end{tikzpicture}
\end{document}

相关内容