表格与绘图:如何打印值表,并使用颜色代表值

表格与绘图:如何打印值表,并使用颜色代表值

为了收集知识,最终让我能够回答这个问题,我正在寻找一种方法来生成一个表格,其中数值被绘制为单元格填充颜色。颜色应该代表数字。
注意:我不是想重复我上面提到的问题。在这里,我只是想找到一种方法来解决该问题的一个子集。

以下是我的 MWE 的渲染:
绘制成表格

到目前为止,我一直在尝试使用 pgfplots 实现此目的(灵感来自这个答案),但在测量方面也存在一些缺点:
我必须手动进行所有计算,以确保所有行和列都对齐良好(参见 MWE)。此外,使用交替样式设置刻度标签的样式会很困难,因为 PGFplot 并非完全为此而构建。除此之外,添加元标签以对刻度标签进行分组(参见其他问题) 可能将变得不可能。

简而言之,我目前使用的方法(使用 PGFplots)并不理想,因为我想要的是绘制一个表格。但据我所知,表格没有这些强大的方法将数值表示为颜色

梅威瑟:

\documentclass{standalone}

\usepackage{filecontents}
\usepackage{pgfplots, pgfplotstable}

\begin{filecontents}{data.csv}
yitem,xitem,val
a,X,0.1
a,Z,0.3
b,Y,0.5
b,Z,0.6
c,Y,0.8
\end{filecontents}

\pgfplotstableread[col sep=comma]{data.csv}\datatable

\begin{document}

\begin{tikzpicture}
\begin{axis}[
    xtick=data,
    ytick=data,
    unbounded coords=jump,
    symbolic x coords={X,Y,Z},
    symbolic y coords={a,b,c},
    axis line style={draw=none},
    tick style=transparent,
    y tick label style={
        inner sep=0,
        font=\tiny,
    },
    x tick label style={
        inner sep=0,
        font=\tiny,
        rotate=90,
        anchor=east,
    },
    enlarge x limits={abs=1mm},
    enlarge y limits={abs=1mm},
    x=2mm,
    y=2mm,
]
\addplot[
    mark=square*,
    mark size=1mm,
    only marks,
    scatter,
    mark options={outer sep=0},
    scatter/use mapped color={fill=mapped color,draw opacity=0},
    point meta=explicit,
] table [
    col sep=comma,
    x=xitem,
    y=yitem,
    meta expr=\thisrow{val},
] {\datatable};

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

相关内容