我正在尝试更改 的标题的单元格颜色和文本颜色pgfplotstable
。更改单元格颜色并不是什么大问题,因为我只需在行前加上\rowcolor
:
\documentclass{standalone}
\usepackage{colortbl}
\usepackage{pgfplotstable}
\definecolor{cellshade}{rgb}{0.42, 0.55, 0.84}
\newcolumntype{C}[1]{>{\centering\arraybackslash}m{#1}}
\begin{document}
\pgfplotstabletypeset[
col sep=comma,
column type={C{5em}},
every first column/.style={reset styles,string type,column type={>{\color{white}\cellcolor{cellshade}\arraybackslash}C{5em}}},
% /pgfplots/colormap={orangewhiteorange}{color=(myorange) color=(white) color=(myorange)},
% color cells={min=-1,max=1,textcolor=black},
every head row/.style={before row={\rowcolor{cellshade}}},
/pgf/number format/fixed,
/pgf/number format/skip 0.
]{
Component,1,2,3
1,1.000,.186,.074
2,.186,1.000,.003
3,.074,.003,1.000
}
\end{document}
但显然表格应该是这样的:
不过,我还是没能找到一个好方法来改变标题文本的颜色。我可以改变每个单独列的名称,但这太不雅了。我知道我原则上可以调整这个答案但在我看来,它不仅非常不雅(它首先改变整个表格的字体样式,然后在后处理中将其反转),而且它还是一种通常无法扩展的解决方案,特别是在我的情况下,它并不适用,因为我在上面的 MWE 中遗漏了一个细节,那就是我无论如何都会对表格单元格进行后处理。我使用此代码为表格主体着色,因此表格的实际外观如下(或至少应该是这样的):
当然,我可以修改此代码,但我也在其他表中使用它,而采用这种方式迟早会导致灾难。这也不是正确做法™。
长话短说,我该如何向标题单元格添加字体命令(或者,我想,任何其他命令),而不影响表格的其余部分。
答案1
显然我还是记不清了如何旋转 pgfplotstable 的头行单元格条目:)
我相信这可以是一个功能请求。
\documentclass[border=5mm]{standalone}
\usepackage{colortbl}
\usepackage{pgfplotstable}
\pgfplotsset{compat=1.10}
\definecolor{cellshade}{rgb}{0.42, 0.55, 0.84}
\newcolumntype{C}[1]{>{\centering\arraybackslash}m{#1}}
\begin{document}
\pgfplotstabletypeset[
col sep=comma,
column type={C{5em}},
every first column/.style={reset styles,string type,
column type={>{\color{white}\cellcolor{cellshade}\arraybackslash}C{5em}}
},
every head row/.append style={
before row={\rowcolor{cellshade}},
typeset cell/.code={
\ifnum\pgfplotstablecol=\pgfplotstablecols
\pgfkeyssetvalue{/pgfplots/table/@cell content}{\textcolor{white}{##1}\\}%
\else
\pgfkeyssetvalue{/pgfplots/table/@cell content}{\textcolor{white}{##1}&}%
\fi
}
},
/pgf/number format/fixed,
/pgf/number format/skip 0.
]{
Component,1,2,3
1,1.000,.186,.074
2,.186,1.000,.003
3,.074,.003,1.000
}
\end{document}