破解绘图处理程序以在 3D 绘图上显示每条 x 线

破解绘图处理程序以在 3D 绘图上显示每条 x 线

编辑悬赏

我想将“方格纸”图案应用于 3D 图形。

![图片1

迄今为止

我通过叠加相同的图形和不同的样式来“模仿”方格纸上的图案,就像这些帖子中展示的那样这里及以下。

在此处输入图片描述

一定存在一种比风格叠加更为聪明的方法,从而真正减慢计算速度。

因此我的问题如何破解 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}

在此处输入图片描述

如你所见,总是两条相邻的线变粗。

这似乎表明,人们可能必须真正地去执行一些核心例程才能获得所需的结果。换句话说,你可能需要想出一个新的情节处理程序。

相关内容