TikZ PGF:如何为 3D 图形开发单元格值?

TikZ PGF:如何为 3D 图形开发单元格值?

目前这里有很多很棒的事情pgfplots。我想到的是这样的:


最小工作示例(MWE):

\documentclass[border=5mm]{standalone}
\usepackage{pgfplots, filecontents}

\begin{filecontents*}{filename.txt}
0 0 -0.64
1 0 -0.5
2 0 -0.4
3 0 -0.31
4 0 -0.23
5 0 -0.2
6 0 -0.24
7 0 -0.32
8 0 -0.42
9 0 -0.59
10 0 -0.76

0 1 -0.54
1 1 -0.4
2 1 -0.27
3 1 -0.17
4 1 -0.08
5 1 -0.03
6 1 -0.05
7 1 -0.14
8 1 -0.27
9 1 -0.45
10 1 -0.63

0 2 -0.46
1 2 -0.31
2 2 -0.16
3 2 -0.03
4 2 0.07
5 2 0.12
6 2 0.11
7 2 0.02
8 2 -0.13
9 2 -0.32
10 2 -0.51

0 3 -0.44
1 3 -0.26
2 3 -0.08
3 3 0.07
4 3 0.18
5 3 0.25
6 3 0.24
7 3 0.14
8 3 -0.01
9 3 -0.2
10 3 -0.41

0 4 -0.44
1 4 -0.26
2 4 -0.04
3 4 0.13
4 4 0.25
5 4 0.32
6 4 0.31
7 4 0.22
8 4 0.07
9 4 -0.14
10 4 -0.37

0 5 -0.44
1 5 -0.26
2 5 -0.05
3 5 0.14
4 5 0.27
5 5 0.34
6 5 0.33
7 5 0.24
8 5 0.09
9 5 -0.12
10 5 -0.36

0 6 -0.48
1 6 -0.29
2 6 -0.08
3 6 0.09
4 6 0.22
5 6 0.29
6 6 0.28
7 6 0.2
8 6 0.06
9 6 -0.13
10 6 -0.35

0 7 -0.55
1 7 -0.34
2 7 -0.15
3 7 -0.0
4 7 0.11
5 7 0.18
6 7 0.18
7 7 0.11
8 7 -0.02
9 7 -0.2
10 7 -0.39

0 8 -0.63
1 8 -0.44
2 8 -0.27
3 8 -0.13
4 8 -0.03
5 8 0.04
6 8 0.04
7 8 -0.02
8 8 -0.13
9 8 -0.29
10 8 -0.45

0 9 -0.71
1 9 -0.59
2 9 -0.43
3 9 -0.28
4 9 -0.18
5 9 -0.13
6 9 -0.13
7 9 -0.17
8 9 -0.26
9 9 -0.38
10 9 -0.53

0 10 -0.83
1 10 -0.75
2 10 -0.59
3 10 -0.45
4 10 -0.35
5 10 -0.3
6 10 -0.3
7 10 -0.34
8 10 -0.42
9 10 -0.52
10 10 -0.66
\end{filecontents*}

\begin{document}
  \begin{tikzpicture}
    \begin{axis}[view={-20}{20}, grid=both]
      \addplot3[surf] file {filename.txt};
      \addplot3[surf, point meta=explicit] table [z expr=0.5, meta index=2] {filename.txt};
    \end{axis}
  \end{tikzpicture}
\end{document}

结果截图:

结果截图


我的问题是:

艺术家如何为图表开发单元格值?是否有可用的工具?

答案1

我无法告诉你这位艺术家做了什么。但是,使用一个函数point meta可以实现非常相似的事情,而无需大量的数据文件。

\documentclass[tikz,border=3.14mm]{standalone}
\usepackage{pgfplots}
\pgfplotsset{compat=1.16}
\begin{document}
  \begin{tikzpicture}[declare function={f(\x,\y,\u,\v)=+(\x-\u)^2+(\y-\v)^2;
  mymeta(\x,\y)=-sqrt(f(x,y,5,5))-0.1*abs(x-y)+0.03*(x-y);}]
    \begin{axis}[view={-20}{20}, grid=both,domain=0:10,samples=11,
    colormap/hot]
      \addplot3[surf, point meta={mymeta(x,y)}] {0.5-0.025*f(x,y,5,5)};
      \addplot3[surf, point meta={mymeta(x,y)}] {0.5};
    \end{axis}
  \end{tikzpicture}
\end{document}

在此处输入图片描述

相关内容