Как разместить заголовки строк и подписи в подтаблицах

Как разместить заголовки строк и подписи в подтаблицах

Я пытался построить матрицу путаницы 3x3 с помощью pdfLatex. Мой вывод на данный момент включен в изображение ниже вместе с моим кодом для него.

У меня возникли проблемы с двумя аспектами матриц.

Во-первых, мне нужно увеличить расстояние между «Фактическим значением» и заголовками строк «Левая», «Правая» и «Прямая» по бокам матриц, однако пока мне не удалось сделать это правильно.

Во-вторых, мне нужно сместить подзаголовок «(b) Часть 2» внизу второй матрицы влево, чтобы он выровнялся со средней строкой матрицы, как это делает подзаголовок «(a) Часть 1» для первой матрицы.

Как мне внести два вышеуказанных исправления?

Я попытался максимально очистить код. Я новичок и поэтому могу использовать не самые лучшие методы. Буду очень признателен за любые дальнейшие советы по улучшению.

Спасибо.

\begin{table}[h!]
    \begin{center}
    \setlength\tabcolsep{0pt}
    \caption{Confusion Matrix}
    \label{tab:table1}
    \begin{subtable}{0.49\linewidth}
        \begin{tabular}{c|c|c|c|c}
            \multicolumn{1}{c}{} & \multicolumn{1}{c}{} & \multicolumn{3}{c}{\bfseries Prediction outcome} \\
            \multicolumn{1}{c}{} & \multicolumn{1}{c}{} & \multicolumn{1}{c}{\textbf{Left}} & \multicolumn{1}{c}{\textbf{Straight}} & \multicolumn{1}{c}{\textbf{Right}}\\
            \multicolumn{1}{c}{\multirow{13}{*}{\rotatebox{90}{\parbox{1.1cm}{\bfseries \mbox{Actual Value}}}}} & \multicolumn{1}{c}{\multirow{-2}{*}{\rotatebox{90}{\parbox{1.1cm}{\textbf{Left}}}}} & \multicolumn{1}{c}{\MyBox{0}{ }} & \multicolumn{1}{c}{\MyBox{1}{ }} & \multicolumn{1}{c}{\MyBox{2}{ }}\\
            \multicolumn{1}{c}{} & \multicolumn{1}{c}{\multirow{1}{*}{\rotatebox{90}{\parbox{1cm}{\textbf{Straight}}}}} & \multicolumn{1}{c}{\MyBox{0}{ }} & \multicolumn{1}{c}{\MyBox{1}{ }} & \multicolumn{1}{c}{\MyBox{2}{ }}\\
            \multicolumn{1}{c}{} & \multicolumn{1}{c}{\multirow{-2}{*}{\rotatebox{90}{\parbox{1.1cm}{\textbf{Right}}}}} & \multicolumn{1}{c}{\MyBox{0}{ }} & \multicolumn{1}{c}{\MyBox{1}{ }} & \multicolumn{1}{c}{\MyBox{2}{ }}
        \end{tabular}
        \caption{Part 1}
    \end{subtable}
    \begin{subtable}{0.49\linewidth}
         \begin{tabular}{c|c|c|c|c}
             \multicolumn{3}{c}{\bfseries Prediction outcome} & \multicolumn{1}{c}{} \\
             \multicolumn{1}{c}{\textbf{Left}} & \multicolumn{1}{c}{\textbf{Straight}} & \multicolumn{1}{c}{\textbf{Right}} & \multicolumn{1}{c}{}\\
             \multicolumn{1}{c}{\MyBox{1000}{ }} & \multicolumn{1}{c}{\MyBox{1}{ }} & \multicolumn{1}{c}{\MyBox{2}{ }} & \multicolumn{1}{c}{\multirow{3}{*}{\rotatebox{270}{\parbox{1cm}{\textbf{Left}}}}} & \multicolumn{1}{c}{\multirow{9}{*}{\rotatebox{270}{\parbox{1.2cm}{\bfseries \mbox{Actual Value}}}}}\\
             \multicolumn{1}{c}{\MyBox{0}{ }} & \multicolumn{1}{c}{\MyBox{1}{ }} & \multicolumn{1}{c}{\MyBox{2}{ }} & \multicolumn{1}{c}{\multirow{-2}{*}{\rotatebox{270}{\parbox{-10cm}{\textbf{Straight}}}}} & \multicolumn{1}{c}{}\\
            \multicolumn{1}{c}{\MyBox{0}{ }} & \multicolumn{1}{c}{\MyBox{1}{ }} & \multicolumn{1}{c}{\MyBox{2}{ }} & \multicolumn{1}{c}{\multirow{1}{*}{\rotatebox{270}{\parbox{1.1cm}{\textbf{Right}}}}}  & \multicolumn{1}{c}{}
         \end{tabular}
         \caption{Part 2}
     \end{subtable}
     \end{center}
\end{table}

Моя матрица путаницы

решение1

Вот более простой код для одной из подтаблиц. Надеюсь, он должен соответствовать тому, что вы хотите:

\documentclass{article}
\usepackage{subcaption}
\usepackage{rotating, multirow}
\usepackage{graphicx}
\newcommand{\MyBox}[1]{{\parbox[c][1.4cm][c]{1.1cm}{#1}}}
\newcommand{\rotbox}[1]{ \rotatebox[origin = c]{90}{\makebox[0pt]{\bfseries#1}}}

\begin{document}

\begin{table}[h!]
\centering
\caption{Confusion Matrix}
\label{tab:table1}
\begin{subtable}{0.49\linewidth}
    \begin{tabular}{c@{\enspace }c|c|c|c|}
        \multicolumn{2}{c}{} & \multicolumn{3}{c}{\bfseries Prediction outcome} \\
        \multicolumn{2}{c}{} & \multicolumn{1}{c}{\textbf{Left}} & \multicolumn{1}{c}{\makebox[0pt]{\textbf{Straight}}} & \multicolumn{1}{c}{\textbf{Right}}\\[0.5ex]
\cline{3-5}
    & \rotbox{Left} & \MyBox{0} & \MyBox{1} & \MyBox{2} \\
\cline{3-5}
 \rotbox{Actual value} & \rotbox{Straight} & \MyBox{0} & \MyBox{1} & \MyBox{2} \\
\cline{3-5}
    & \rotbox{Right} & \MyBox{0} & \MyBox{1} & \MyBox{2} \\
\cline{3-5}
    \end{tabular}
    \caption{Part 1}
\end{subtable}
\end{table}

\end{document} 

введите описание изображения здесь

Связанный контент