使用实际数据点作为 Tikz 表面图的中心

使用实际数据点作为 Tikz 表面图的中心

我有一个非常特别的问题要问各位 Tikz 大神!

我正在尝试根据 3D 数据和俯视图绘制图表。最终,图像看起来应该像一个图案图,其中包含 5 x 5 个不同的图块,所有图块的颜色都与数据相对应z

当使用该\addplot[surf]函数执行此操作时,tikz 仅输出 4 x 4 网格

\documentclass{scrartcl}
\usepackage[utf8]{inputenc}
\usepackage{pgfplots}
\begin{document}
\begin{tikzpicture}
\begin{axis}[view={0}{90},
    scale only axis,
    height=5cm,
    xtick = {-1,-0.5,0,0.5,1},
    colormap/blackwhite,
    colorbar right,
    axis equal image,
    mesh/rows=5,
    %shader=faceted interp,
    %patch type=bilinear,
    colormap/blackwhite,
    colorbar right,
]

\addplot3[surf]  coordinates {
(1, 1, 0.28)
(0.5, 1, 0.29)
(0, 1, 0.29)
(-0.5, 1, 0.25)
(-1, 1, 0.26)
(1, 0.5, 0.27)
(0.5, 0.5, 0.28)
(0, 0.5, 0.29)
(-0.5, 0.5, 0.29)
(-1, 0.5, 0.28)
(1, 0, 0.29)
(0.5, 0, 0.25)
(0, 0, 0.27)
(-0.5, 0, 0.25)
(-1, 0, 0.28)
(1, -0.5, 0.25)
(0.5, -0.5, 0.27)
(0, -0.5, 0.28)
(-0.5, -0.5, 0.29)
(-1, -0.5, 0.25)
(1, -1, 0.25)
(0.5, -1, 0.26)
(0, -1, 0.25)
(-0.5, -1, 0.28)
(-1, -1, 0.28)
};

\end{axis}
\end{tikzpicture}
\end{document}

在此处输入图片描述

...这是我能作弊得到的最接近的答案:-/

\documentclass{scrartcl}
\usepackage[utf8]{inputenc}
\usepackage{pgfplots}
\begin{document}
\begin{tikzpicture}
\begin{axis}[view={0}{90},
    scale only axis,
    height=5cm,
    xtick = {-1,-0.5,0,0.5,1},
    colormap/blackwhite,
    colorbar right,
    axis equal image,
    enlarge x limits=0.2,
    enlarge y limits=0.2,
]

\addplot3[mesh,scatter,mark=square*,mark size=14,black]  coordinates {
(1, 1, 0.28)
(0.5, 1, 0.29)
(0, 1, 0.29)
(-0.5, 1, 0.25)
(-1, 1, 0.26)
(1, 0.5, 0.27)
(0.5, 0.5, 0.28)
(0, 0.5, 0.29)
(-0.5, 0.5, 0.29)
(-1, 0.5, 0.28)
(1, 0, 0.29)
(0.5, 0, 0.25)
(0, 0, 0.27)
(-0.5, 0, 0.25)
(-1, 0, 0.28)
(1, -0.5, 0.25)
(0.5, -0.5, 0.27)
(0, -0.5, 0.28)
(-0.5, -0.5, 0.29)
(-1, -0.5, 0.25)
(1, -1, 0.25)
(0.5, -1, 0.26)
(0, -1, 0.25)
(-0.5, -1, 0.28)
(-1, -1, 0.28)
};
\end{axis}
\end{tikzpicture}
\end{document}

使用标记

一定有什么隐藏的功能,可以让我使用 surf 功能干净利落地完成这一操作,对吗?

感谢您阅读这篇 tldr 文章!

答案1

我相信matrix plot这就是你想要的

\documentclass[tikz]{standalone}
\usepackage{pgfplots}
\begin{document}
    \begin{tikzpicture}
        \begin{axis}[colormap/blackwhite,colorbar right]
            \addplot[matrix plot,mesh/cols=5,point meta=explicit]table[meta=z]{
                x       y       z
                1       1       0.28
                0.5     1       0.29
                0       1       0.29
                -0.5    1       0.25
                -1      1       0.26
                1       0.5     0.27
                0.5     0.5     0.28
                0       0.5     0.29
                -0.5    0.5     0.29
                -1      0.5     0.28
                1       0       0.29
                0.5     0       0.25
                0       0       0.27
                -0.5    0       0.25
                -1      0       0.28
                1       -0.5    0.25
                0.5     -0.5    0.27
                0       -0.5    0.28
                -0.5    -0.5    0.29
                -1      -0.5    0.25
                1       -1      0.25
                0.5     -1      0.26
                0       -1      0.25
                -0.5    -1      0.28
                -1      -1      0.28
            };
        \end{axis}
    \end{tikzpicture}
\end{document}

相关内容