如何为混淆矩阵表添加文本描述标题

如何为混淆矩阵表添加文本描述标题

我正在尝试创建一个在机器学习中称为混淆矩阵的表,它看起来应该像这样:

所需表

但是,我无法对汽车、树木等文字进行编码,表格变得扭曲。代码如下

\documentclass[%
 aip,
 jmp,%
 amsmath,amssymb,
preprint,%reprint,
dvipsnames%
%author-year,%
%author-numerical,%
]{revtex4-2}

\usepackage{graphicx}% Include figure files
\usepackage{dcolumn}% Align table columns on decimal point
\usepackage{bm}% bold math
\usepackage[mathlines]{lineno}% Enable numbering of text and display math
\linenumbers\relax % Commence numbering lines
\usepackage{hyperref}
 \usepackage{color}
     \usepackage{xcolor}
\begin{document}

 \begin{table*}
\caption{Confusion Matrix.} % title of
\centering % used for centering table
\begin{tabular}{l|l|c|c|c|c|c}
\multicolumn{2}{c}{}&\multicolumn{2}{c}{Predicted}\\
\cline{3-6}
\multicolumn{2}{c|}{}& 0 &  1 &2 &  3 &    \\
 & \small{(cars)}  & \small{(cars+human)} & (trees) &  (animal)  &\multicolumn{1}{c}{} \\
\cline{2-6}
\multirow{}{}{Actual}& 0  &   &  & & \\
\cline{2-6}
& 1   &  &   & &\\
\cline{2-6}
&   2 &   & &  & \\
\cline{2-6}
&   3 &   &  &  &   \\
\multicolumn{1}{c}{} & \multicolumn{1}{c}{} & \multicolumn{1}{c} {} & \multicolumn{1}{c}{} &\multicolumn{1}{c}{}  & \multicolumn{1}{c}{} \\
\end{tabular}
\label{Table1}
\end{table*}

\end{document}

上面的代码生成了以下表格:

不正确

请帮助获取正确的表格,以便标题在新行中有文本描述。谢谢。


更新:根据 Andrew 的回答,我实现了代码。有两点需要修改:(a) 如何去掉左上角的垂直线?我已经能够去掉水平线。由于该单元格是空的,因此那里应该没有线条。(b) 填写值后,有很多空白处。如何使表格看起来具有视觉吸引力,以便空间可以自行调整?

 \begin{table*}
    \caption{Confusion Matrix.} % title of
    \centering % used for centering table
      \begin{tabularx}{0.8\textwidth}{l@{\quad}|X|X|X|X|X|}
        \multicolumn1l{}&\multicolumn{5}{c}{\sffamily Predicted}\\\cline{3-6}
        &  & \textsf{0}&\textsf{1} &\textsf{2}&\textsf{3} \\
        &  & \textsf{(cars)} &\textsf{(cars+humans)} & \textsf{(trees)} & \textsf{(human)} \\\cline{2-6}
        \multirow{8}{*}{\sffamily \rotatebox{90}{Actual}}
        & \textsf{0}& 100&0 & 0&0 \\
        &   & & & &\\  \cline{2-6}
        & \textsf{1}&0 &100 & 0& 0\\
        &   & & & & \\  \cline{2-6}
        & \textsf{2}&0 &0 & 100&0 \\
        &   & & & & \\  \cline{2-6}
        & \textsf{3}&0 &0 & 0& 100\\
        &   & & & & \\  \cline{2-6}
      \end{tabularx}
    \label{Table1}
\end{table*}

输出结果如下:

新的

答案1

以下内容可能适合您的需求:

在此处输入图片描述

\documentclass[%
 aip,
 jmp,%
 amsmath,amssymb,
preprint,%reprint,
dvipsnames%
%author-year,%
%author-numerical,%
]{revtex4-2}

\usepackage{graphicx}% Include figure files
\usepackage{dcolumn}% Align table columns on decimal point
\usepackage{bm}% bold math
\usepackage[mathlines]{lineno}% Enable numbering of text and display math
\linenumbers\relax % Commence numbering lines
\usepackage{multirow}
\usepackage{xcolor}
\usepackage{hyperref}
\begin{document}

\begin{table*}
    \caption{Confusion Matrix.} % title of
    \centering % used for centering table
      \begin{tabular}{l@{\quad}|l|*{4}{wc{2.75cm}|}}
        \multicolumn{2}{l}{} &   \multicolumn{4}{c}{Predicted}              \\  \cline{3-6}
        \multicolumn{1}{l}{} &   & 0      & 1            & 2       & 3       \\
        \multicolumn{1}{l}{} &   & (cars) &(cars+humans) & (trees) & (human) \\  \cline{2-6}
        \multirow{4}{*}{\rotatebox[origin=c]{90}{Actual}}
                             & 0 & 100    & 0            & 0       & 0       \\ \cline{2-6}
                             & 1 & 0      & 100          & 0       & 0       \\ \cline{2-6}
                             & 2 & 0      & 0            & 100     & 0       \\ \cline{2-6}
                             & 3 & 0      & 0            & 0       & 100     \\ \cline{2-6}
      \end{tabular}
    \label{Table1}
\end{table*}

\end{document}

答案2

以下是您可以使用 做的{NiceTabular}事情nicematrix

\documentclass{article}
\usepackage{xcolor}
\usepackage{nicematrix}
\begin{document}

\NiceMatrixOptions{cell-space-limits = 3pt}

\setlength{\belowcaptionskip}{2mm}

 \begin{table*}
\caption{Confusion Matrix.}
\centering
\begin{NiceTabular}{c*{4}{wc{2cm}}}[first-row,first-col,hvlines]
  & & \Block{1-4}{Predicted}\\
  & & \Block{}{0 \\ (cars)} 
    & \Block{}{1 \\ (cars+humans)} 
    & \Block{}{2 \\ (trees)}
    & \Block{}{3 \\ (human)} \\
\Block{4-1}{\rotate Actual}
  & 0 \\
  & 1 \\
  & 2 \\
  & 3 \\
\end{NiceTabular}
\label{Table1}
\end{table*}

\end{document}
  • 在 中{NiceTabular},您有键first-rowfirst-col。键hvlines将绘制除第一行和第一列之外的所有规则。

  • 您可以使用\Block水平或垂直合并单元格。

上述代码的输出

如果您不希望左上角单元格有任何边框,您可以使用键corners指定不绘制规则的角(角是自动计算的)。

\documentclass{article}
\usepackage{xcolor}
\usepackage{nicematrix}

\begin{document}

\NiceMatrixOptions{cell-space-limits = 3pt}

\setlength{\belowcaptionskip}{2mm}

 \begin{table*}
\caption{Confusion Matrix.}
\centering
\begin{NiceTabular}{c*{4}{wc{2cm}}}[first-row,first-col,hvlines,corners=NW]
  & & \Block{1-4}{Predicted}\\
  & & \Block{}{0 \\ (cars)} 
    & \Block{}{1 \\ (cars+humans)} 
    & \Block{}{2 \\ (trees)}
    & \Block{}{3 \\ (human)} \\
\Block{4-1}{\rotate Actual}
  & 0 \\
  & 1 \\
  & 2 \\
  & 3 \\
\end{NiceTabular}
\label{Table1}
\end{table*}

\end{document}

第二段代码的输出

答案3

出于书签 手册,我不太喜欢在表格中使用垂直和水平规则,但如果这是您想要的,那么这里有一种方法可以做到这一点。

在此处输入图片描述

几点说明:

  • 你应该加载超链接最后打包
  • 我已经切换到使用tabularxwidth 的环境0.8\textwidth,这样你就可以使用X-column 类型来分隔相同宽度的列
  • 矩阵的左侧列仅用于单词Actual,该单词使用\multirow\rotatebox排版,来自图形包旋转单词Actual
  • 我不知道这个矩阵的条目是什么样的,但基于 MWE,我假设将它们放在第 2 列行标题下方的第二行是合理的。根据这些表格单元格中实际情况,您可能想要使用\multirow
  • 行和列标题使用\sffamily

完整代码如下:

\documentclass[%
 aip,
 jmp,%
 amsmath,amssymb,
preprint,%reprint,
dvipsnames%
%author-year,%
%author-numerical,%
]{revtex4-2}

\usepackage{graphicx}% Include figure files
\usepackage{tabularx}% Align table columns on decimal point
\usepackage{bm}% bold math
\usepackage[mathlines]{lineno}% Enable numbering of text and display math
\linenumbers\relax % Commence numbering lines
\usepackage{multirow}
\usepackage{xcolor}
\usepackage{hyperref}
\begin{document}

 \begin{table*}
    \caption{Confusion Matrix.} % title of
    \centering % used for centering table
      \begin{tabularx}{0.8\textwidth}{l@{\quad}*5{|X}|}
        \multicolumn1l{}&\multicolumn{5}{c}{\sffamily Predicted}\\\cline{2-6}
        & & \textsf{0}&\textsf{1} &\textsf{2}&\textsf{3} \\
        & & \textsf{(cars)} &\textsf{(cars+humans)} & \textsf{(trees)} & \textsf{(human)} \\\cline{2-6}
        \multirow{8}{*}{\sffamily \rotatebox{90}{Actual}}
        & \textsf{0}& & & & \\
        &   & & & & \\  \cline{2-6}
        & \textsf{1}& & & & \\
        &   & & & & \\  \cline{2-6}
        & \textsf{2}& & & & \\
        &   & & & & \\  \cline{2-6}
        & \textsf{3}& & & & \\
        &   & & & & \\  \cline{2-6}
      \end{tabularx}
    \label{Table1}
\end{table*}

\end{document}

相关内容