我有以下代码:
\documentclass{standalone}
\usepackage{tikz}
\usepackage{pgfplots}
\pgfplotsset{compat=newest}
\usepgfplotslibrary{patchplots}
\begin{document}
\begin{tikzpicture}[]
\begin{axis}[domain=-1:1, y domain=-1:1, scale=1/2, hide axis]
\addplot3[
, surf
, samples=20
, thick
, color=blue!40!white
, faceted color=blue!70!black
, fill opacity=0.60
]
{x^2-y^2};
\end{axis}
\end{tikzpicture}
\end{document}
输出结果如下:
我想从该图形中删除“网格”,但保留“轮廓”。这可能吗?
减少样本数量并没有太大帮助。因为samples=5
我们有:
答案1
像这样吗?(我真正想问的是因为我不确定你的意思是这不是带有轮廓的。)
\documentclass[tikz,border=3mm]{standalone}
\usepackage{pgfplots}
\pgfplotsset{compat=newest}
\begin{document}
\begin{tikzpicture}[]
\begin{axis}[domain=-1:1, y domain=-1:1, scale=1/2, hide axis]
\addplot3[point meta=1,
z buffer=sort,
surf,
shader=interp,
samples=20,
opacity=0.30
]
{x^2-y^2};
\end{axis}
\end{tikzpicture}
\end{document}
您可以使用一个技巧来获得轮廓:使用point meta
来区分内部和边界上的点。边界的宽度与样本数量成反比,因此如果您希望它相对较小,则可能需要使用 来lualatex
加速具有许多样本的编译。
\documentclass[tikz,border=3mm]{standalone}
\usepackage{pgfplots}
\pgfplotsset{compat=newest}
\begin{document}
\begin{tikzpicture}[]
\begin{axis}[domain=-1:1, y domain=-1:1, scale=1/2, hide axis,
colormap={blueblack}{color=(black) color=(blue!30)}]
\addplot3[point meta={1-ifthenelse(abs(x)==1,1,ifthenelse(abs(y)==1,1,0))},
z buffer=sort,
surf,
shader=interp,
samples=50,
]
{x^2-y^2};
\end{axis}
\end{tikzpicture}
\end{document}
具有不透明度:
\documentclass[tikz,border=3mm]{standalone}
\usepackage{pgfplots}
\pgfplotsset{compat=newest}
\begin{document}
\begin{tikzpicture}[]
\begin{axis}[domain=-1:1, y domain=-1:1, scale=1/2, hide axis,
colormap={blueblack}{color=(black) color=(blue!30)}]
\addplot3[point meta={1-ifthenelse(abs(x)==1,1,ifthenelse(abs(y)==1,1,0))},
z buffer=sort,
surf,opacity=0,
samples=50,fill opacity=0.5
]
{x^2-y^2};
\end{axis}
\end{tikzpicture}
\end{document}