Мне нужно вставить большие матрицы в мою диссертацию, и я не могу найти способ сделать это красиво. Проблема в том, что эти матрицы действительно разрежены, но мне они нужны полными для целей анализа.
До сих пор мне удавалось представить их следующим образом (оставляя пустые места там, где значение равно 0):
Дело в том, что матрица имеет размер 14х14, но мне нужно, чтобы в первой строке/столбце отображалось число 1->14.
Есть идеи, как его улучшить, сохранив при этом полноту?
EDIT: Вот MWE:
\documentclass[11pt,a4paper]{article}
\usepackage{array}
\begin{document}
\begin{table}[!h]
\centering
\begin{tabular}{|c>{\centering\arraybackslash}p{0.5cm}|>{\centering\arraybackslash}p{0.5cm}|>{\centering\arraybackslash}p{0.5cm}|>{\centering\arraybackslash}p{0.5cm}|>{\centering\arraybackslash}p{0.5cm}|>{\centering\arraybackslash}p{0.5cm}|>{\centering\arraybackslash}p{0.5cm}|>{\centering\arraybackslash}p{0.5cm}|>{\centering\arraybackslash}p{0.5cm}|>{\centering\arraybackslash}p{0.7cm}|>{\centering\arraybackslash}p{0.5cm}|>{\centering\arraybackslash}p{0.5cm}|>{\centering\arraybackslash}p{0.5cm}|>{\centering\arraybackslash}p{0.85cm}|}
\hline
{\bfseries SVM} & \multicolumn{1}{|c|}{1} & \multicolumn{1}{c|}{2} & \multicolumn{1}{c|}{3} & \multicolumn{1}{c|}{4} & \multicolumn{1}{c|}{5} & \multicolumn{1}{c|}{6} & \multicolumn{1}{c|}{7} & \multicolumn{1}{c|}{8} & \multicolumn{1}{c|}{9} & \multicolumn{1}{c|}{10} & \multicolumn{1}{c|}{11} & \multicolumn{1}{c|}{12} & \multicolumn{1}{c|}{13} & \multicolumn{1}{c|}{14} \\
\hline
\multicolumn{1}{|c|}{1} & & & & & & & & & & & & & & 2.3 \\
\hline \multicolumn{1}{|c|}{2} & & & & & & & & & & & & & & 0.4 \\
\hline \multicolumn{1}{|c|}{3} & & & & & & & & & & & & & & \\
\hline \multicolumn{1}{|c|}{4} & & & & & & & & & & & & & & 0.2 \\
\hline \multicolumn{1}{|c|}{5} && & & & & & & & 0.7 & & & & & 1.2 \\
\hline \multicolumn{1}{|c|}{6} & & & & & & & & & & & & & & 0.3 \\
\hline \multicolumn{1}{|c|}{7} & & & & & & & & & & & & & & 0.2 \\
\hline \multicolumn{1}{|c|}{8} & & & & & & & & & & & & & & 0.1 \\
\hline \multicolumn{1}{|c|}{9} & & & & & & & & & 3.4 & & & & & 1.5 \\
\hline \multicolumn{1}{|c|}{10} & & & & & & & & & & 11.0 & & & & \\
\hline \multicolumn{1}{|c|}{11} & & & & & & & & & & & & & & 0.1 \\
\hline \multicolumn{1}{|c|}{12} & & & & & & & & & & & & & & 2.6 \\
\hline \multicolumn{1}{|c|}{13} & & & & & & & & & & & & & & 0.1 \\
\hline \multicolumn{1}{|c|}{14} & & & & & & & & & 0.2 & 0.3 & & & & 200.0 \\
\hline
\end{tabular}
\caption{Mean confusion matrices for the first multi-class classification.}
\label{table6}
\end{table}
\end{document}
решение1
Несколько возможностей:
\documentclass[11pt,a4paper]{article}
\usepackage{dcolumn}
\newcolumntype{d}{D..{3.1}}
\begin{document}
\noindent X\dotfill X
\bigskip
\begin{table}[htp]% not ever [!h]
\centering
\setlength\tabcolsep{.37pt}
\small
\begin{tabular}{@{}|D..{2.0}|*{14}{d|}@{}}
\hline
\multicolumn{1}{|c|}{\footnotesize\bfseries SVM} &
\multicolumn{1}{c|}{1}
& \multicolumn{1}{c|}{2}
& \multicolumn{1}{c|}{3}
& \multicolumn{1}{c|}{4}
& \multicolumn{1}{c|}{5}
& \multicolumn{1}{c|}{6}
& \multicolumn{1}{c|}{7}
& \multicolumn{1}{c|}{8}
& \multicolumn{1}{c|}{9}
& \multicolumn{1}{c|}{10}
& \multicolumn{1}{c|}{11}
& \multicolumn{1}{c|}{12}
& \multicolumn{1}{c|}{13}
& \multicolumn{1}{c|}{14}
\\
\hline
1 & & & & & & & & & & & & & & 2.3 \\
\hline 2 & & & & & & & & & & & & & & 0.4 \\
\hline 3 & & & & & & & & & & & & & & \\
\hline 4 & & & & & & & & & & & & & & 0.2 \\
\hline 5 && & & & & & & & 0.7 & & & & & 1.2 \\
\hline 6 & & & & & & & & & & & & & & 0.3 \\
\hline 7 & & & & & & & & & & & & & & 0.2 \\
\hline 8 & & & & & & & & & & & & & & 0.1 \\
\hline 9 & & & & & & & & & 3.4 & & & & & 1.5 \\
\hline 10 & & & & & & & & & & 11.0 & & & & \\
\hline 11 & & & & & & & & & & & & & & 0.1 \\
\hline 12 & & & & & & & & & & & & & & 2.6 \\
\hline 13 & & & & & & & & & & & & & & 0.1 \\
\hline 14 & & & & & & & & & 0.2 & 0.3 & & & & 200.0 \\
\hline
\end{tabular}
\caption{Mean confusion matrices for the first multi-class classification.}
\label{table6}
\end{table}
\begin{table}[htp]% not ever [!h]
\centering
\setlength\tabcolsep{.58pt}
\small
\def\z{\multicolumn{1}{D.\cdot{2.2}}{.}}
\begin{tabular}{@{}D..{2.0}|*{14}{d}@{}}
\multicolumn{1}{c|}{\footnotesize\bfseries SVM} &
\multicolumn{1}{c}{1}
& \multicolumn{1}{c}{2}
& \multicolumn{1}{c}{3}
& \multicolumn{1}{c}{4}
& \multicolumn{1}{c}{5}
& \multicolumn{1}{c}{6}
& \multicolumn{1}{c}{7}
& \multicolumn{1}{c}{8}
& \multicolumn{1}{c}{9}
& \multicolumn{1}{c}{10}
& \multicolumn{1}{c}{11}
& \multicolumn{1}{c}{12}
& \multicolumn{1}{c}{13}
& \multicolumn{1}{c}{14}
\\
\hline
1 &\z &\z &\z &\z &\z &\z &\z &\z &\z &\z &\z &\z &\z & 2.3 \\
2 &\z &\z &\z &\z &\z &\z &\z &\z &\z &\z &\z &\z &\z & 0.4 \\
3 &\z &\z &\z &\z &\z &\z &\z &\z &\z &\z &\z &\z &\z & \\
4 &\z &\z &\z &\z &\z &\z &\z &\z &\z &\z &\z &\z &\z & 0.2 \\
5 &\z &\z &\z &\z &\z &\z &\z &\z & 0.7 &\z &\z &\z &\z & 1.2 \\
6 &\z &\z &\z &\z &\z &\z &\z &\z &\z &\z &\z &\z &\z & 0.3 \\
7 &\z &\z &\z &\z &\z &\z &\z &\z &\z &\z &\z &\z &\z & 0.2 \\
8 &\z &\z &\z &\z &\z &\z &\z &\z &\z &\z &\z &\z &\z & 0.1 \\
9 &\z &\z &\z &\z &\z &\z &\z &\z & 3.4 &\z &\z &\z &\z & 1.5 \\
10 &\z &\z &\z &\z &\z &\z &\z &\z &\z & 11.0 &\z &\z &\z & \\
11 &\z &\z &\z &\z &\z &\z &\z &\z &\z &\z &\z &\z &\z & 0.1 \\
12 &\z &\z &\z &\z &\z &\z &\z &\z &\z &\z &\z &\z &\z & 2.6 \\
13 &\z &\z &\z &\z &\z &\z &\z &\z &\z &\z &\z &\z &\z & 0.1 \\
14 &\z &\z &\z &\z &\z &\z &\z &\z & 0.2 & 0.3 &\z &\z &\z & 200.0 \\
\end{tabular}
\caption{Mean confusion matrices for the first multi-class classification.}
\label{tablezz}
\end{table}
\end{document}
решение2
Вот как бы я это изменил. Красота таблицы может быть субъективной, но я думаю, что линии только добавляют шума и делают ее «более сложной» для комфортного чтения. Я предпочитаю использовать только (редкие) горизонтальные линии или чередующиеся цвета строк, как в этом случае.
Любые добавленные пакеты или команды были прокомментированы в коде в качестве быстрого объяснения. Оставьте комментарий, если у вас есть конкретные вопросы.
Редактировать: Я добавил правильное выравнивание числовых значений в соответствии с десятичным разделителем.
\documentclass{article}
\usepackage{booktabs, dcolumn} % required for \toprule command. Others are \midrule, and \bottomrule, second one required for aligning numerals by decimal separator
\usepackage{array,ragged2e}
\usepackage[table]{xcolor} % loads also »colortbl«, required for the alternate row colours
\makeatletter
\newcommand*{\centerfloat}{%
\parindent \z@
\leftskip \z@ \@plus 1fil \@minus \textwidth
\rightskip\leftskip
\parfillskip \z@skip}
\makeatother % this one is required for the \centerfloat command to work
\newcolumntype{.}{D{.}{.}{-1}}
%\newcolumntype{z}[1]{D{.}{.}{#1}} % so your top tabular doesn't look as messy
\begin{document}
\begin{figure}[!htbp]
\centerfloat
\rowcolors{2}{gray!10}{white}
\begin{tabular}{.*{15}{.}} % *{num}{form}, the format form is repeated num times.
\multicolumn{1}{c}{{\bfseries SVM}} &
\multicolumn{1}{c}{1} &
\multicolumn{1}{c}{2} &
\multicolumn{1}{c}{3} &
\multicolumn{1}{c}{4} &
\multicolumn{1}{c}{5} &
\multicolumn{1}{c}{6} &
\multicolumn{1}{c}{7} &
\multicolumn{1}{c}{8} &
\multicolumn{1}{c}{9} &
\multicolumn{1}{c}{10} &
\multicolumn{1}{c}{11} &
\multicolumn{1}{c}{12} &
\multicolumn{1}{c}{13} &
\multicolumn{1}{c}{14} \\
\toprule
\multicolumn{1}{c}{1} & & & & & & & & & & & & & & 2.3 \\
\multicolumn{1}{c}{2} & & & & & & & & & & & & & & 11110.4 \\
\multicolumn{1}{c}{3} & & & & & & & & & & & & & & \\
\multicolumn{1}{c}{4} & & & & & & & & & & & & & & 0.2 \\
\multicolumn{1}{c}{5} && & & & & & & & 0.7 & & & & & 1.2 \\
\multicolumn{1}{c}{6} & & & & & & & & & & & & & & 0.3 \\
\multicolumn{1}{c}{7} & & & & & & & & & & & & & & 0.2 \\
\multicolumn{1}{c}{8} & & & & & & & & & & & & & & 0.1 \\
\multicolumn{1}{c}{9} & & & & & & & & & 3.4 & & & & & 1.5 \\
\multicolumn{1}{c}{10} & & & & & & & & & & 11.0 & & & & \\
\multicolumn{1}{c}{11} & & & & & & & & & & & & & & 0.1 \\
\multicolumn{1}{c}{12} & & & & & & & & & & & & & & 2.6 \\
\multicolumn{1}{c}{13} & & & & & & & & & & & & & & 0.1 \\
\multicolumn{1}{c}{14} & & & & & & & & & 0.2 & 0.3 & & & & 200.0 \\
\end{tabular}
\caption{Mean confusion matrices for the first multi-class classification.}
\label{table6}
\end{figure}
\end{document}
Если вам действительно нужны вертикальные линии, вы можете добавить \arrayrulecolor{gray!30}
прямо под \rowcolors{2}{gray!10}{white}
. Также замените заголовок таблицы на это: \begin{tabular}{.*{13}{.|}{.}}
, таким образом, вертикальные линии появятся только в ячейках, а не по бокам таблицы.