编辑悬赏
我想将“方格纸”图案应用于 3D 图形。
迄今为止
我通过叠加相同的图形和不同的样式来“模仿”方格纸上的图案,就像这些帖子中展示的那样这里及以下。
一定存在一种比风格叠加更为聪明的方法,从而真正减慢计算速度。
因此我的问题如何破解 3D 图上的绘图处理程序,以便我们可以在每个 x 上用不同的样式(更大的线宽?其他颜色?等等)绘制一条线?
作为更普遍的情况,它可以应用于 3D 图形上的方格纸样式图案。
TikZ 中的方格纸
https://texample.net/tikz/examples/graph-paper/
注意:从教学角度来说,它使我能够沿着 X 或 Y 轴“切割”图形以展示 3D 图形(我仍然没有找到 Z 轴,但这将是另一个问题)。方格纸被扭曲了,它很好地说明了凸度在哪里。
=====================================
原始问题
后如何按 x 或 y 分割 3d 图,更普遍的问题是
如何破解 3D 图上的图处理程序,以便我们可以x
用不同的样式(更大line width
?其他color
?等等)绘制一条线?
下图显示了沿x
和的手动分段y
。
但是我们怎样才能直接使用 3D 图上已有的线条来做到这一点呢?(而不是 3 条addplot
叠加)
更新的 MWE
\documentclass{standalone}
\usepackage{pgfplots}
\usepackage{tikz}
\pgfplotsset{colormap={whitered}{color(0cm)=(white!20!orange); color(2.5cm)=(orange!75!red)}}
\newif\ifTwoD
\newif\ifThreeD
\newif\ifTranchX
\newif\ifTranchY
\TwoDtrue
\ThreeDtrue
\TranchXtrue
\TranchYtrue
\pgfplotsset{
2DX/.style ={samples y=10,mesh,patch type=line,thick,red},
2DY/.style ={samples y=10,mesh,patch type=line,thick,black},
3D/.style ={surf,opacity=0.2}, }
\begin{document}
\begin{tikzpicture}
\begin{axis}[
view={-30}{30},
axis lines=left,
axis on top,
axis line style={black!40},
xlabel style ={sloped},
ylabel style ={sloped},
colormap name=whitered,
ticklabel style={font=\small},
samples=51]
\ifTwoD
\ifTranchX \addplot3[2DX] (y,x,{exp(-x^2-y^2)}); \fi
\ifTranchY \addplot3[2DY] {exp(-x^2-y^2)} ; \fi
\fi
\ifThreeD \addplot3 [surf,opacity=0.2] {exp(-x^2-y^2)}; \fi
\end{axis}
\end{tikzpicture}
\end{document}
答案1
这不是答案,只是评论。也就是说,出于一个简单的原因,按照你的建议做可能会更难:表面图绘制的是小多边形而不是线。也就是说,你可以改变线宽,但可以随时将其更改为你想要的两倍的线。如果你想要花费时间,改变线宽实际上并不太难point meta
(这意味着你不能使用不同的点元来填充颜色)。只需要一个 3d 版本的这个答案,其中opacity
被交易为line width
。
\documentclass[tikz,border=3mm]{standalone}
\usepackage{pgfplots}
\pgfplotsset{compat=1.17}
\pgfplotsset{colormap={whitered}{color(0cm)=(white!20!orange);
color(2.5cm)=(orange!75!red)}}
\pgfplotsset{2DX/.style ={samples y=10,mesh,%patch type=line,thick,red,
},
2DY/.style ={samples y=10,mesh,patch type=line,thick,black},
3D/.style ={surf,
point meta={(abs(x-int(x))<0.02?1:0)+(abs(y-int(y))<0.02?1:0)-%
(abs(x-int(x))<0.02&&abs(y-int(y))<0.02?1:0)},
faceted color=black,
line width=0.2+0.8*\pgfplotspointmetatransformed/1000
}}
\begin{document}
\def\pgfplotspointmetatransformed{1000}
\begin{tikzpicture}
\begin{axis}[
view={-30}{30},
axis lines=left,
axis on top,
axis line style={black!40},
xlabel style ={sloped},
ylabel style ={sloped},
%colormap name=whitered,
ticklabel style={font=\small},
samples=51]
\addplot3 [3D] {exp(-x^2-y^2)};
\end{axis}
\end{tikzpicture}
\end{document}
如你所见,总是两条相邻的线变粗。
这似乎表明,人们可能必须真正地去执行一些核心例程才能获得所需的结果。换句话说,你可能需要想出一个新的情节处理程序。