我正在尝试创建一个在机器学习中称为混淆矩阵的表,它看起来应该像这样:
但是,我无法对汽车、树木等文字进行编码,表格变得扭曲。代码如下
\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-row
和first-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
出于书签 手册,我不太喜欢在表格中使用垂直和水平规则,但如果这是您想要的,那么这里有一种方法可以做到这一点。
几点说明:
- 你应该加载超链接最后打包
- 我已经切换到使用
tabularx
width 的环境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}