使用 PSTricks 或 TikZ 创建热图

使用 PSTricks 或 TikZ 创建热图

我有大量与值相关的二维坐标,例如:

  x   |   y   | value
27.50   52.15   12.51
61.83   13.32   57.56
36.23   21.83   41.73
40.46   85.67   25.20
...

数据不是表格,我希望以某种方式插入两个数据点之间的点(具体方式目前还不清楚)

我想将数据预设为热图,如下所示: 热图示例

是否有任何可供 PSTricks 或 TikZ 使用的现成包可以执行此操作?

答案1

您也可以使用pgfplots包,如下所示。我使用了与 Herbert 相同数量的数据点以及默认matlab颜色图。您应该使用编译以下代码,LuaLaTeX因为它需要大量内存。因为它需要很多时间(在我的 PC 上大约需要 2 分钟),最好先编译一次,然后将pdf图形文件作为图像插入。

\documentclass[border=10pt]{standalone}
\usepackage{pgfplots}
\usepackage{xcolor}

\pgfplotsset{compat=newest}

\begin{document}
\begin{tikzpicture}
\begin{axis}[
    colormap/jet,
    colorbar,
    view={0}{90}]
    \addplot3[surf,shader=flat] file {data-map.dat};
\end{axis}
\end{tikzpicture}
\end{document} 

在此处输入图片描述

答案2

数据集包含超过 65000 条记录的示例(http://tug.org/PSTricks/pst-plot/3D/contourN.data)。

\documentclass{article}
\usepackage{pstricks-add}

\begin{document}
\psset{unit=1.5cm}
\begin{pspicture}[showgrid](-3,-3)(3,3)
\pstContour[colored]{contourN.data}
\end{pspicture}

\medskip
\begin{pspicture}[showgrid](-3,-3)(3,3)
\pstContour{contourN.data}
\end{pspicture}%

\end{document}

在此处输入图片描述

答案3

有一个tikzDevice适用于 R 的程序,它将为在 R 中创建的图生成 TikZ 代码。因此,如果您使用 R 创建热图(例如,使用ggplot2geom_density2d(),您也可以毫不费力地获得 TikZ 代码。有一个学习曲线, 尽管。

但是,这种图像应该作为(可能是高分辨率的)光栅图像包含在您的文档中,因为矢量版本可能需要很长时间才能渲染。因此,您可以创建绘图的 TikZ 版本,将其编译为 PDF,然后以所需的分辨率/像素密度转换为 PNG。

相关内容