我如何使用 旋转表格的第一项pgfplotstable
?我有下表,想旋转descN
第一行的标签。
\documentclass{article}
\usepackage[table]{xcolor}
\usepackage{pgfplotstable}
\pgfplotstableset{
every head row/.style={
before row=\hline,
after row=\hline\hline
},
every last row/.style={
after row=\hline
},
every first column/.style={
column type/.add={|}{}
},
every last column/.style={
column type=||l|
},
color cells/.style={
col sep=&,
row sep=\\,
string type,
postproc cell content/.code={%
\pgfkeysalso{@cell content=\rule{0cm}{2.4ex}%
\pgfmathsetmacro\y{max((##1 * 100), 0}%
\edef\temp{\noexpand\cellcolor{black!\y}}\temp%
\pgfmathtruncatemacro\x\y%
\ifnum\x>50 \color{white}\fi%
##1}%
},
columns/x/.style={
column name={},
postproc cell content/.code={}
}
}
}
\begin{document}
\begin{table}
\centering
\pgfplotstabletypeset[color cells]{
desc1 & desc2 & desc3 & desc4 & x \\
0.9 & 0.1 & 0 & 0 & desc1 \\
0 & 0.8 & 0.1 & 0.1 & desc2 \\
0 & 0 & 0.95 & 0.05 & desc3 \\
0 & 0.1 & 0.05 & 0.85 & desc3 \\
}
\end{table}
\end{document}
答案1
肯定还有另一个钥匙可以到达这里,但我记不住,所以我费了点力气才做到的。
\documentclass{article}
\usepackage[table]{xcolor}
\usepackage{pgfplotstable}
\pgfplotstableset{
every head row/.style={
before row=\hline,
after row=\hline\hline,
typeset cell/.code={
\ifnum\pgfplotstablecol=\pgfplotstablecols
\pgfkeyssetvalue{/pgfplots/table/@cell content}{\\}%
\else
\pgfkeyssetvalue{/pgfplots/table/@cell content}{\rotatebox{90}{##1}&}%
\fi
}
},
every last row/.style={
after row=\hline
},
every first column/.style={
column type/.add={|}{}
},
every last column/.style={
column type=||l|
},
color cells/.style={
col sep=&,
row sep=\\,
string type,
postproc cell content/.code={%
\pgfkeysalso{@cell content=\rule{0cm}{2.4ex}%
\pgfmathsetmacro\y{max((##1 * 100), 0}%
\edef\temp{\noexpand\cellcolor{black!\y}}\temp%
\pgfmathtruncatemacro\x\y%
\ifnum\x>50 \color{white}\fi%
##1}%
},
columns/x/.style={
column name={},
postproc cell content/.code={}
}
}
}
\begin{document}
\begin{table}
\centering
\pgfplotstabletypeset[color cells]{
desc1 & desc2 & desc3 & desc4 & x \\
0.9 & 0.1 & 0 & 0 & desc1 \\
0 & 0.8 & 0.1 & 0.1 & desc2 \\
0 & 0 & 0.95 & 0.05 & desc3 \\
0 & 0.1 & 0.05 & 0.85 & desc3 \\
}
\end{table}
\end{document}
答案2
我尝试了@percusse 给出的解决方案,但是它没有显示预期的结果,例如没有旋转的标题。
看来选择器typeset cell
忽略了该键every head row
— — 至少在pgfplotstable
我使用的 v1.5.1 中是这样的。
稍作修改,使用评论关于 Christian Feuersaenger 在 sf.net 上的另一个主题确实产生了所需的输出!
关键的变化是应用于typeset cell
整个表格并使用条件来隔离我们想要修改的表格部分。
\documentclass{article}
\usepackage[table]{xcolor}
\usepackage{pgfplotstable}
\pgfplotstableset{
%MODIFICATION START
typeset cell/.append code={%
\ifnum\pgfplotstablerow<0%head rows are -1
\ifnum\pgfplotstablecol=\pgfplotstablecols%special treatment for last column
\pgfkeyssetvalue{/pgfplots/table/@cell content}{\\}%
\else
\pgfkeyssetvalue{/pgfplots/table/@cell content}{\rotatebox{90}{#1}&}%
\fi
\fi
},
every head row/.style={
before row=\hline,
after row=\hline\hline,
},
%MODIFICATION END
every last row/.style={
after row=\hline
},
every first column/.style={
column type/.add={|}{}
},
every last column/.style={
column type=||l|
},
color cells/.style={
col sep=&,
row sep=\\,
string type,
postproc cell content/.code={%
\pgfkeysalso{@cell content=\rule{0cm}{2.4ex}%
\pgfmathsetmacro\y{max((##1 * 100), 0}%
\edef\temp{\noexpand\cellcolor{black!\y}}\temp%
\pgfmathtruncatemacro\x\y%
\ifnum\x>50 \color{white}\fi%
##1}%
},
columns/x/.style={
column name={},
postproc cell content/.code={}
}
}
}
\begin{document}
\begin{table}
\centering
\pgfplotstabletypeset[color cells]{
desc1 & desc2 & desc3 & desc4 & x \\
0.9 & 0.1 & 0 & 0 & desc1 \\
0 & 0.8 & 0.1 & 0.1 & desc2 \\
0 & 0 & 0.95 & 0.05 & desc3 \\
0 & 0.1 & 0.05 & 0.85 & desc3 \\
}
\end{table}
\end{document}
就我而言,我想改变头行的外观,所以我可以建议将问题修改为更通用的形式吗?这样,更多有类似问题的人,比如这封闭式问题,将被纳入本次讨论。
再次感谢@percusse 和 Christian Feuersaenger 为我指明了正确的方向。我错过了\pgfkeyssetvalue
手册中使用它的重要性;)
!