这是我在这个网站上的第一个问题,而且我对 LaTeX 及其众多软件包还只是个新手。
我发现这篇旧帖子并尝试用该\rotatebox
方法重新创建它,但结果忽略第一列的强制换行,也忽略第二列的居中。
这是我使用的代码(如果这很重要的话,我正在使用 Overleaf 工作):
\documentclass{article}
\usepackage{graphicx}
\usepackage{tabularx}
\usepackage{multirow}
\begin{document}
{
\newcolumntype{Y}{>{\centering\arraybackslash}X}
\begin{table}[h!]
\centering
\caption{Confusion matrix and performance metrics calculated from the combinations of true and predicted conditions}\label{tab:tableConfMatrix2}
\begin{tabularx}{\textwidth}{|Y|Y|Y|Y|Y|}
\hline
\multicolumn{2}{|c|}{} & \multicolumn{2}{c|}{\textbf{Prediction/ classification}} & \\
\cline{3-4}
\multicolumn{2}{|c|}{} & positive & negative & \\
\hline
\multirow[c]{2}{=}{\rotatebox[origin=c]{90}{\textbf{True condition /\newline gold standard}}} & \rotatebox[origin=c]{90}{positive} & True positive, TP & False negative, FN & Sensitivity\newline= TP / (TP + FN)\\
\cline{2-5}
& \rotatebox[origin=c]{90}{negative} & False positive, FP & True negative, TN & Specificity\newline= TN / (TN + FP)\\
\hline
\multicolumn{2}{|c|}{} & Positive predictive value\newline= TP / (TP + FP) & Negative predictive value\newline= TN / (TN + FN) & \\
\hline
\end{tabularx}
\end{table}
}
\end{document}
我也尝试了包\begin{sideways}
中的命令rotating
,结果完全相同。现在我没有主意了。
答案1
我的回答基于tabularray
,如果您必须处理这种表格,我建议您这样做。我对此并不完全满意,因为我不得不做一些调整
总体来说,tabularray
具有更直观的界面并且其功能可以通过许多库进行扩展;其中一些库提供与独立包类似的功能,主要是等booktabs
。siunitx
我还在 4 个角设置了自定义背景。如果您不喜欢它,只需bg=cellbg
从受影响的单元格以及序言中的行\colorlet{cellbg}{black!10}
和宏中删除即可。\uspackage{xcolor}
其他要点。
添加了一些额外的宏和自定义长度,以稍微澄清主要代码并避免重复。
编辑。虽然右下角是灰色的,但我相信还有一个指标
Accuracy = (TP + TN)/N
我可以修改代码以将其包含在表中,或者您可能想自己尝试一下。如果您遇到问题,请告诉我。
这个例子
\documentclass{article}
\usepackage{graphicx}
\usepackage[dvipsnames]{xcolor}
\usepackage{tabularray}
\newcommand\rot[1]{\rotatebox{90}{#1}}
\newcommand\Tr[1]{\begin{tabular}[t]{@{}c@{}}#1\end{tabular}}
\colorlet{cellbg}{black!10}
\newlength\heavyline \setlength{\heavyline}{0.12em}
\newlength\lightline \setlength{\lightline}{0.08em}
\begin{document}
\begin{table}[h!]
\begin{tblr}{
width=\textwidth,
colspec = {| Q | Q | X[3,c,h] | X[3,c,h] | X[3,c,h] |},
hline{1,6} = {\heavyline}, hline{3,5} = {\lightline},
vline{1,6} = {\heavyline}, vline{3,5} = {\lightline},
cell{1}{1} = {r=2,c=2}{bg=cellbg},
cell{3}{1} = {r=2}{cmd=\textbf},
cell{1}{5} = {r=2}{bg=cellbg},
cell{5}{1} = {c=2}{bg=cellbg},
cell{5}{5} = {bg=cellbg},
cell{3-4}{3-4} = {cmd=\rule{0pt}{18pt},c,h},
cells = {font=\small},
}
&& \SetCell[c=2]{cmd=\textbf} Prediction / Classification && \\
\hline
&& positive & negative & \\
\rot{\Tr{True condition\\gold standard}} &
\rot{\Tr{positive} } &
True positive, TP &
False negative, FN &
{Sensitivity\\TP/(TP + FN)} \\
\hline
&
\rot{\Tr{negative} } &
False positive, FP &
True negative, TN &
{Specificity\\TN/(TN + FP)} \\
&&
{Positive\\Predictive Value\\TP/(TP + FP)} &
{Negative\\Predictive Value\\TN/(TN + FN)} & \\
\end{tblr}
\end{table}
\end{document}