表格单元格中的旋转文本拒绝居中,并忽略换行符

表格单元格中的旋转文本拒绝居中,并忽略换行符

这是我在这个网站上的第一个问题,而且我对 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具有更直观的界面并且其功能可以通过许多库进行扩展;其中一些库提供与独立包类似的功能,主要是等booktabssiunitx

我还在 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}

相关内容