我有大量与值相关的二维坐标,例如:
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 创建热图(例如,使用ggplot2
)geom_density2d()
,您也可以毫不费力地获得 TikZ 代码。有一个学习曲线, 尽管。
但是,这种图像应该作为(可能是高分辨率的)光栅图像包含在您的文档中,因为矢量版本可能需要很长时间才能渲染。因此,您可以创建绘图的 TikZ 版本,将其编译为 PDF,然后以所需的分辨率/像素密度转换为 PNG。