我找到了一些使用 PGFplotstable 为表格值分配颜色的代码,但不幸的是,它只适用于最上面一行是头行(postproc 会忽略)的表格。我还需要 postproc 忽略第一列 - 可能比较简单,但我就是找不到怎么做。
这是代码:
\pgfplotstableset{
color cells/.style={
col sep=comma,
string type,
postproc cell content/.code={%
\pgfkeysalso{@cell content=\rule{0cm}{2.4ex}%
\pgfmathsetmacro\y{min(100,max(0,abs(round(##1 * 0.5))))}%
\ifnum##1<0\edef\temp{\noexpand\cellcolor{blue!\y}}\temp\fi%
\ifnum##1>0\edef\temp{\noexpand\cellcolor{red!\y}}\temp\fi%
\pgfmathtruncatemacro\x\y%
\ifnum\x>50 \color{white}\fi%
##1}%
}
}
}
\begin{table}\caption{Correlation or something}
\centering
\pgfplotstabletypeset[color cells]{
a,b,c,d
x,-300,-200,-100
y,0,100,200
z,300,40,800
}
\end{table}
(原始出处为:使用 TikZ 绘制热图)
代码不起作用,因为第一列中的值不是数字 - 我只是想忽略它们,让这些单元格保持原样。
答案1
啊哈,我找到了,其实很简单:我以属性 'columns/a/.style={reset style,string type}' 开始标签:
\pgfplotstabletypeset[color cells, columns/a/.style={reset styles,string type}]
其中“a”是我的第一列的名称!
希望这能帮助别人;)