带有旋转标签的 Latex 混淆矩阵

带有旋转标签的 Latex 混淆矩阵

我正在尝试制作下表:

在此处输入图片描述

我尝试了以下方法:

\begin{tabular}{cc|cc}
\multicolumn{1}{c}{} &\multicolumn{1}{c}{} &\multicolumn{1}{c}{Predicted} \\ 
\multicolumn{1}{c}{} & 
\multicolumn{1}{c|}{} & 
\multicolumn{1}{c}{Yes} & 
\multicolumn{1}{c}{No} \\ \hline
\multirow{1}{*}{\rotatebox{90}{Actual}}
& Yes  & 100 & 0   \\ 
& No  & 10   & 80 \\ \hline
\end{tabular}

然而,这给了我:

在此处输入图片描述

请注意,“预测”和“实际”标签未居中,列/行位于下方/右侧。此外,水平线应在“实际”标签前停止。有什么建议吗?

谢谢

答案1

以下是实现所需结果的几种方法。我强烈建议使用booktabs包装并避免使用垂直线(如第三个示例所示):

在此处输入图片描述

代码:

\documentclass{article}
\usepackage{multirow}
\usepackage{graphicx}
\usepackage{booktabs}

\begin{document}
\begin{tabular}{cc|cc}
\multicolumn{1}{c}{} &\multicolumn{1}{c}{} &\multicolumn{2}{c}{Predicted} \\ 
\multicolumn{1}{c}{} & 
\multicolumn{1}{c|}{} & 
\multicolumn{1}{c}{Yes} & 
\multicolumn{1}{c}{No} \\ \hline
\multirow[c]{2}{*}{\rotatebox[origin=tr]{90}{Actual}}
& Yes  & 100 & 0   \\[1.5ex]
& No  & 10   & 80 \\ \hline
\end{tabular}
\quad% ---------------------------
\begin{tabular}{@{}cc|cc@{}}
\multicolumn{1}{c}{} &\multicolumn{1}{c}{} &\multicolumn{2}{c}{Predicted} \\ 
\multicolumn{1}{c}{} & 
\multicolumn{1}{c|}{} & 
\multicolumn{1}{c}{Yes} & 
\multicolumn{1}{c}{No} \\ 
\cline{2-4}
\multirow[c]{2}{*}{\rotatebox[origin=tr]{90}{Actual}}
& Yes  & 100 & 0   \\[1.5ex]
& No  & 10   & 80 \\ 
\cline{2-4}
\end{tabular}

\par\bigskip
\begin{tabular}{@{}cc cc@{}}
\multicolumn{1}{c}{} &\multicolumn{1}{c}{} &\multicolumn{2}{c}{Predicted} \\ 
\cmidrule(lr){3-4}
\multicolumn{1}{c}{} & 
\multicolumn{1}{c}{} & 
\multicolumn{1}{c}{Yes} & 
\multicolumn{1}{c}{No} \\ 
\cline{2-4}
\multirow[c]{2}{*}{\rotatebox[origin=tr]{90}{Actual}}
& Yes  & 100 & 0   \\[1.5ex]
& No  & 10   & 80 \\ 
\cline{2-4}
\end{tabular}
\end{document}

答案2

更简短、更简单:

  • 都是\multicolumn{1}{c}{...}多余的
  • 用来\rotateboxorigin=center
  • 对于更多垂直(对称分布)的空间,请使用\makegapedcells包中的宏makecell。它用于multirow在第一列的单元格中间隔旋转单词“实际”
  • 因为使用水平线\cline{2-4}

    \documentclass{article}
    \usepackage{graphicx}
    \usepackage{multirow}
    \usepackage{makecell} % for more vertical space in cells
    \setcellgapes{5pt}
    
    \begin{document}
    {    % for making group where "\makegapedcells" is valid
    \makegapedcells
    \begin{tabular}{cc|cc}
    \multicolumn{2}{c}{}
                &   \multicolumn{2}{c}{Predicted} \\
        &       &   Yes &   No              \\ 
        \cline{2-4}
    \multirow{2}{*}{\rotatebox[origin=c]{90}{Actual}}
        & Yes   & 100   & 0                 \\
        & No    & 10    & 80                \\ 
        \cline{2-4}
        \end{tabular}
     }
     \end{document}
    

在此处输入图片描述

相关内容