tikzpicture passt nicht in die Tabelle, da sich im Objekt ein "?"-Symbol befindet

tikzpicture passt nicht in die Tabelle, da sich im Objekt ein "?"-Symbol befindet

Ich versuche, einer Tabelle in einem Diagramm ein ordentliches Aussehen zu verleihen, aber das Objekt \tolabelscheint den Radius des Kreises zu überschreiten, wodurch die Tabelle nicht ausgerichtet erscheint.

Ausgabe

Wenn ich das letzte Objekt gegen ein anderes austausche, passt \labelaes \labelb. Das liegt anscheinend an dem Fragezeichen im Kreis. Wie kann ich es passend machen?

Diese Tabelle ist Teil einer größeren Figur mit anderen Komponenten. Aber das ist der einzige Teil, der nicht funktioniert. Mein Code ist unten:

\documentclass{article}
\usepackage{graphicx} % Required for inserting images

\usepackage{tikz}
\usetikzlibrary{shapes.geometric, arrows, calc}

    \newcommand{\labela}{\tikz{\fill[blue, draw=black] (0,0) circle (0.25cm);}}
    \newcommand{\labelb}{\tikz{\fill[purple, draw=black] (0,0) circle (0.25cm);}}
    \newcommand{\unlabeled}{\tikz{\fill[white, draw=black] (0,0) circle (0.25cm);}}
    \newcommand{\tolabel}{%
    \tikz{\fill[yellow, draw=black] (0,0) circle (0.25cm); \node[text=black] at (0,0) {\textbf{?}};}%
}

\begin{document}

\begin{figure}
    \centering
    \begin{tikzpicture}
        \node[draw, fill=gray!20, minimum width=3cm, minimum height=1cm] at (15,4) {%
            \begin{tabular}{@{}l@{}}
                Legend \\
                \labela \hspace{0.5em} Label A \\
                \labelb \hspace{0.5em} Label B \\
                \unlabeled \hspace{0.5em} Unlabeled \\
                \tolabel \hspace{0.5em} {\shortstack{Sample to\\ be labeled}}
            \end{tabular}
        };
    \end{tikzpicture}
    \caption{Caption}
    \label{fig:enter-label}
\end{figure}

\end{document}

Antwort1

Hier wird gezeigt, wie man Saveboxen anstelle von Tikzpictures verwendet. Ich habe auch Baselines verwendet, um sie an den Text anzupassen.

\documentclass{article}
\usepackage{graphicx} % Required for inserting images

\usepackage{tikz}
\usetikzlibrary{shapes.geometric, arrows, calc}

    \newsavebox{\labela}
    \savebox{\labela}{\tikz[baseline=(A.base)]{\fill[blue, draw=black] (0,0) circle (0.25cm);
      \node (A) at (0,0) {\textbf{\strut}};}}
    \newsavebox{\labelb}
    \savebox{\labelb}{\tikz[baseline=(A.base)]{\fill[purple, draw=black] (0,0) circle (0.25cm);
      \node (A) at (0,0) {\textbf{\strut}};}}
    \newsavebox{\unlabeled}
    \savebox{\unlabeled}{\tikz[baseline=(A.base)]{\fill[white, draw=black] (0,0) circle (0.25cm);
      \node (A) at (0,0) {\textbf{\strut}};}}
    \newsavebox{\tolabel}
    \savebox{\tolabel}{\tikz[baseline=(A.base)]{\fill[yellow, draw=black] (0,0) circle (0.25cm); 
      \node (A) at (0,0) {\textbf{?}};}}

\begin{document}

\begin{figure}
    \centering
    \begin{tikzpicture}
        \node[draw, fill=gray!20, minimum width=3cm, minimum height=1cm] at (15,4) {%
            \begin{tabular}{@{}l@{}}
                Legend \\
                \usebox\labela \hspace{0.5em} Label A \\
                \usebox\labelb \hspace{0.5em} Label B \\
                \usebox\unlabeled \hspace{0.5em} Unlabeled \\
                \usebox\tolabel \hspace{0.5em} {\shortstack{Sample to\\ be labeled}}
            \end{tabular}
        };
    \end{tikzpicture}
    \caption{Caption}
    \label{fig:enter-label}
\end{figure}

\end{document}

Demo

Antwort2

Dies ist eine Arbeit für eine TikZ-Matrix:

\documentclass{article}

\usepackage{tikz}
\usetikzlibrary{matrix}
\tikzset{
    mynode/.style={
      circle, 
      text height=2.5ex, text depth=1ex, 
      text width=.25cm, 
      inner sep=0pt, 
      text centered,
      draw, 
      fill=#1
      },
    }

\usepackage{caption}

\begin{document}
\begin{figure}\centering
\begin{tikzpicture} 
\matrix[
  matrix of nodes, nodes in empty cells,
  fill=gray!30,
  nodes={anchor=center},
  column 2/.style={text width=width("be labelled")},
  inner xsep=6pt,
  row sep=4pt,
  ] (mymatr) {  
   &[4pt] \\[6pt]
  |[mynode=blue]| & Label A \\
  |[mynode=purple]| & Label B \\
  |[mynode=white]| & Unlabelled \\[-2pt]
  |[mynode=yellow]|{?} & {Sample to\\ be labelled} \\
  };
  \node[anchor=north west, inner ysep=4pt] at (mymatr.north west) {Legend};
  \end{tikzpicture}
\caption{Caption}
\end{figure}
\end{document}

Bildbeschreibung hier eingeben

verwandte Informationen