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