pgfplots 如何用坐标平滑表面图

pgfplots 如何用坐标平滑表面图

我有一些不是来自某些特定功能的坐标......

\begin{document}
    \begin{figure}
        \begin{tikzpicture} 
            \begin{axis} [width=16cm,height=19cm,samples=100]
                \addplot3[surf]  coordinates {  
                (1,1,70)(2,1,48)(3,1,41)(4,1,70)( 5,1,68)(6,1,82)(7,1,38)(8,1,47)(9,1,35)(10,1,66)(11,1,53)(12,1,78)
                (1,2,91)(2,2,43)(3,2,68)(4,2,90)( 5,2,66)(6,2,55)(7,2,66)(8,2,46)(9,2,25)(10,2,38)(11,2,50)(12,2,58)
                (1,3,60)(2,3,68)(3,3,39)(4,3,65)( 5,3,59)(6,3,69)(7,3,72)(8,3,62)(9,3,94)(10,3,36)(11,3,33)(12,3,39)
                (1,4,48)(2,4,80)(3,4,68)(4,4,66)( 5,4,59)(6,4,63)(7,4,93)(8,4,63)(9,4,30)(10,4,52)(11,4,60)(12,4,14)};
            \end{axis}
        \end{tikzpicture}
    \end{figure} 
\end{document}

结果是这样的……

在此处输入图片描述

当我把选项弄得顺利的时候,就像那样......

\begin{document}
    \begin{figure}
        \begin{tikzpicture} 
            \begin{axis} [width=16cm,height=19cm,samples=100]
                \addplot3[smooth]  coordinates {  
                (1,1,70)(2,1,48)(3,1,41)(4,1,70)( 5,1,68)(6,1,82)(7,1,38)(8,1,47)(9,1,35)(10,1,66)(11,1,53)(12,1,78)
                (1,2,91)(2,2,43)(3,2,68)(4,2,90)( 5,2,66)(6,2,55)(7,2,66)(8,2,46)(9,2,25)(10,2,38)(11,2,50)(12,2,58)
                (1,3,60)(2,3,68)(3,3,39)(4,3,65)( 5,3,59)(6,3,69)(7,3,72)(8,3,62)(9,3,94)(10,3,36)(11,3,33)(12,3,39)
                (1,4,48)(2,4,80)(3,4,68)(4,4,66)( 5,4,59)(6,4,63)(7,4,93)(8,4,63)(9,4,30)(10,4,52)(11,4,60)(12,4,14)};
            \end{axis}
        \end{tikzpicture}
    \end{figure} 
\end{document}

我得到了下一张图片...

在此处输入图片描述

我想要的是拥有第一张图像的连续表面,但像第二张图像中的曲线一样平滑,不仅沿 x 轴,而且沿深度...我该如何实现呢???

答案1

您可以采用以下解决方案之一如何根据一组数据绘制曲面?使用gnuplotPGFPlots 中的后端生成光滑的表面:

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

\begin{filecontents*}{data.txt}
1   1   70
2   1   48
3   1   41  
4   1   70
 5  1   68
6   1   82
7   1   38
8   1   47
9   1   35
10  1   66
11  1   53
12  1   78
1   2   91
2   2   43
3   2   68
4   2   90
 5  2   66
6   2   55
7   2   66
8   2   46
9   2   25
10  2   38
11  2   50
12  2   58
1   3   60
2   3   68
3   3   39
4   3   65
 5  3   59
6   3   69
7   3   72
8   3   62
9   3   94
10  3   36
11  3   33
12  3   39
1   4   48
2   4   80
3   4   68
4   4   66
 5  4   59
6   4   63
7   4   93
8   4   63
9   4   30
10  4   52
11  4   60
12  4   14
\end{filecontents*}

\begin{document}
    \begin{tikzpicture}
    \begin{axis}
    \addplot3 [surf] gnuplot [raw gnuplot] {
        set dgrid3d 50,50 spline;
        splot 'data.txt';       
    };
    \end{axis}
    \end{tikzpicture}
\end{document}

答案2

不支持自动平滑表面pgfplots(即您可以提交功能请求)。

根据您获取数据文件的方式,您可以通过增加样本数量或使用库提供的更高阶数来提高平滑度patch types(比较pgfplotspatchplots使用程序图形创建贝塞尔曲面)。

如果您的输入实际上是一个数学表达式,您可能能够依赖patch type sampling上面提到的链接中说明的功能。

这些解决方法之外的所有内容都需要成为 pgfplots 的功能请求。

相关内容