von Bartman » Fr 3. Jun 2022, 07:30
Du kannst die Legende mithilfe einer
tabular-Umgebung in einen Knoten setzen und diesen an der Matrix ausrichten oder eine weitere Matrix anlegen und sie auf der rechten Seite der vorhandenen Matrix platzieren.
Mein Vorschlag zeigt, wie die zweite Variante aussehen könnte:
\documentclass[ngerman]{article}
\usepackage[T1]{fontenc}
\usepackage{lmodern}
\usepackage{babel}
\usepackage{tikz}
\usepackage{showframe}
% Die TikZ-Bibliothek babel muss geladen werden, damit der LaTeX-Lauf
% nicht wegen der Anführungsstriche im Argument der Funktion depth
% mit einer Fehlermeldung beendet wird.
\usetikzlibrary{matrix,fit,babel}
\begin{document}
\begin{center}
\begin{tikzpicture}[
font=\scriptsize,
box/.style={
draw,
minimum size=1.5cm
},
every label/.style={text depth=depth("p")}
]
\matrix [
matrix of nodes,
row sep=1mm,
column sep=1mm
] (conmat) {
|(tpos) [
box,
label={[name=p']left:\(\mathbf{p'}\)},
label={[name=p]above:\(\mathbf{p}\)}
]| TP%
&
|(fneg) [box, label=above:\(\mathbf{n}\)]| FN%
\\
|(fpos) [box, label=left:\(\mathbf{n'}\)]| FP%
&
|(tneg) [box]| TN%
\\
};
\node [fit=(tpos) (tneg), inner sep=0pt] (conmat without labels) {};
\path [font=\bfseries\scriptsize]
(conmat without labels.west-|p'.west)
node [left, align=center] {Tatsächliche\\Klasse}
(conmat without labels.north|-p.north)
node [above] {Ermittelte Klasse}
;
\matrix[
matrix of nodes,
nodes={anchor=base west},
execute at empty cell={\node{--};},
column 3/.style={text width=3cm},
right=1mm
] at (conmat without labels.east) {
True Positive (TP) && Modell sagt die positive Klasse richtig vorher\\
True Negative (TN) && Modell sagt die negative Klasse richtig vorher\\
False Positive (FP) && Modell sagt die positive Klasse falsch vorher\\
False Negative (FN) && Modell sagt die negative Klasse falsch vorher\\
};
\end{tikzpicture}
\end{center}
\end{document}
Du kannst die Legende mithilfe einer [tt]tabular[/tt]-Umgebung in einen Knoten setzen und diesen an der Matrix ausrichten oder eine weitere Matrix anlegen und sie auf der rechten Seite der vorhandenen Matrix platzieren.
Mein Vorschlag zeigt, wie die zweite Variante aussehen könnte:
[code]\documentclass[ngerman]{article}
\usepackage[T1]{fontenc}
\usepackage{lmodern}
\usepackage{babel}
\usepackage{tikz}
\usepackage{showframe}
% Die TikZ-Bibliothek babel muss geladen werden, damit der LaTeX-Lauf
% nicht wegen der Anführungsstriche im Argument der Funktion depth
% mit einer Fehlermeldung beendet wird.
\usetikzlibrary{matrix,fit,babel}
\begin{document}
\begin{center}
\begin{tikzpicture}[
font=\scriptsize,
box/.style={
draw,
minimum size=1.5cm
},
every label/.style={text depth=depth("p")}
]
\matrix [
matrix of nodes,
row sep=1mm,
column sep=1mm
] (conmat) {
|(tpos) [
box,
label={[name=p']left:\(\mathbf{p'}\)},
label={[name=p]above:\(\mathbf{p}\)}
]| TP%
&
|(fneg) [box, label=above:\(\mathbf{n}\)]| FN%
\\
|(fpos) [box, label=left:\(\mathbf{n'}\)]| FP%
&
|(tneg) [box]| TN%
\\
};
\node [fit=(tpos) (tneg), inner sep=0pt] (conmat without labels) {};
\path [font=\bfseries\scriptsize]
(conmat without labels.west-|p'.west)
node [left, align=center] {Tatsächliche\\Klasse}
(conmat without labels.north|-p.north)
node [above] {Ermittelte Klasse}
;
\matrix[
matrix of nodes,
nodes={anchor=base west},
execute at empty cell={\node{--};},
column 3/.style={text width=3cm},
right=1mm
] at (conmat without labels.east) {
True Positive (TP) && Modell sagt die positive Klasse richtig vorher\\
True Negative (TN) && Modell sagt die negative Klasse richtig vorher\\
False Positive (FP) && Modell sagt die positive Klasse falsch vorher\\
False Negative (FN) && Modell sagt die negative Klasse falsch vorher\\
};
\end{tikzpicture}
\end{center}
\end{document}[/code]