나는 pdfLatex를 사용하여 3x3 혼동 행렬을 구성하려고 노력해 왔습니다. 지금까지의 출력은 코드와 함께 아래 이미지에 포함되어 있습니다.
행렬의 두 가지 측면에 문제가 있습니다.
먼저 행렬 측면을 따라 "실제 값"과 "왼쪽", "오른쪽" 및 "직선" 행 머리글 사이의 공간을 늘려야 하지만 지금까지는 제대로 할 수 없었습니다.
둘째, 두 번째 행렬의 맨 아래에 있는 하위 캡션 "(b) Part 2"를 왼쪽으로 이동하여 하위 캡션 "(a) Part 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}