Ausrichten von .tikz-PGFPlots mit halb benutzerdefinierten Stilen

Ausrichten von .tikz-PGFPlots mit halb benutzerdefinierten Stilen

Zuvor wurde mir in dieser Frage geholfen, wie man Diagramme in einer Tabelle mit optionalen Unterdiagrammen ausrichtet und positioniert:Überlagern Sie zwei .tikz-Dateien aus der Eingabe

Es hat super funktioniert, aber ich war nicht zufrieden damit, die Diagramme mit Skalierungsoptionen zu verkleinern. Mir ist es viel lieber, nur Breite und Höhe anzugeben und Latex die Schriftgröße anpassen zu lassen. Dadurch ist der Artikel viel konsistenter geworden.

Wenn ich also ein Diagramm erstelle, weise ich ihm in der Präambel einen Stil zu, der eine stapelweise Einstellung der Breite und Höhe ermöglicht, und bearbeite dann darunter die einzelnen Einträge, die für das Diagramm relevant sind.

Leider hat die Verwendung dieses Systems die Ausrichtung wieder verworfen. Es scheint, dass die Ausrichtung nur dann erhalten bleibt, wenn ich entweder einen benutzerdefinierten Stil verwende, der ALLE Einträge in der Präambel definiert, oder wenn ich überhaupt keinen benutzerdefinierten Stil verwende und die Breite und Höhe im .tikz-Bild gleich einstelle.

Vollständiges MWE, um mein Problem zu zeigen:

\documentclass{article}
\usepackage{graphicx,array,booktabs,pgfplots}
\pgfplotsset{compat=1.9}
\usetikzlibrary{calc}

\pgfplotsset{inTable/.style={
width=4.0cm,
height=4.0cm,
}}

\newsavebox{\mybox}
\sbox{\mybox}{
\begin{tikzpicture}
\begin{axis}[inTable,
scale only axis,
xmin=1,
xmax=500,
xlabel={A},
ymin=0.5,
ymax=1,
ylabel={A}]

\addplot [color=blue,solid,line width=1.0pt,forget plot]
  table[row sep=crcr]{
10  0.7  \\
11  0.7  \\
12  0.7  \\
};
\end{axis}
\end{tikzpicture}}

\newsavebox{\myboxB}
\sbox{\myboxB}{
\begin{tikzpicture}
\begin{axis}[inTable,
scale only axis,
xmin=1,
xmax=200,
xlabel={B},
ymin=0,
ymax=3,
ylabel={B}]

\addplot [color=blue,solid,line width=1.0pt,forget plot]
  table[row sep=crcr]{
10  0.5  \\
11  0.6  \\
12  0.7  \\
};
\end{axis}
\end{tikzpicture}}

\begin{document}

\newcolumntype{P}[1]{>{\centering\arraybackslash}p{#1}}
\begin{table}[htb!]
 \centering
     \begin{tabular}{P{6.5cm} P{6.5cm}}
     \toprule
      Expt1 & Expt2\\
      \cmidrule(r){1-1}\cmidrule(l){2-2}
      \begin{tikzpicture}[baseline=(a.base)]
      \node[outer sep=0pt]  (a){\usebox{\mybox}};
       %%% Change dimensions in $(a.east)+(-0.9,0cm)$
%      \node[anchor=east,outer sep=0pt] at
%               ($(a.east)+(-0.9,0cm)$){\usebox{\mybox}};
      \end{tikzpicture}
      {\usebox{\mybox}}
      &
      {\usebox{\mybox}}
      {\usebox{\myboxB}}
      \\ \bottomrule
      \end{tabular}
      \caption{Test}
      \label{tbl:1}
\end{table}

\end{document}

Fehlausrichtung

Hilfe wird sehr geschätzt. Dies sollte der letzte Teil meines Protokolls zum Plotten von Tabellen- und Diagrammeinfügungen sein.

Antwort1

Okay, danke, Torbjørn T, das Handbuch hat meine Erinnerung aufgeweckt.

Erstens, da das Bild oben links eigentlich {tikzpicture}in einer \begin{tikzpicture}Umgebung war. Ich musste dasselbe für das Bild oben rechts tun. Dann behebt das Hinzufügen der Ausrichtungsflags [baseline, trim axis left, trim axis right]zu jedem \begin{tikzpicture}(die ich aus einer .tikz-Datei in mein eigentliches Dokument importiere) die Ausrichtung.

Endlich habe ich eine Methode zur vollständigen Abstimmung und Kontrolle von Handlungssträngen und Nebenhandlungen. Vielen Dank an alle, die mir geholfen haben.

Vollständiges MEW:

\documentclass{article}
\usepackage{graphicx,array,booktabs,pgfplots}
\pgfplotsset{compat=1.9}
\usetikzlibrary{calc}

\pgfplotsset{inTable/.style={
width=4.0cm,
height=4.0cm, %Change these numbers to ovveride all graphs in the table sizes in the table
}}

\newsavebox{\mybox}
\sbox{\mybox}{
\begin{tikzpicture}[baseline, trim axis left, trim axis right]
\begin{axis}[inTable,
scale only axis,
baseline,
xmin=1,
xmax=500,
xlabel={A},
ymin=0.5,
ymax=1,
ylabel={A}]

\addplot [color=blue,solid,line width=1.0pt,forget plot]
  table[row sep=crcr]{
10  0.7  \\
11  0.7  \\
12  0.7  \\
};
\end{axis}
\end{tikzpicture}}

\newsavebox{\myboxB}
\sbox{\myboxB}{
\begin{tikzpicture}[baseline, trim axis left, trim axis right]
\begin{axis}[inTable,
scale only axis,
xmin=1,
xmax=200,
xlabel={B},
ymin=0,
ymax=3,
ylabel={B}]

\addplot [color=blue,solid,line width=1.0pt,forget plot]
  table[row sep=crcr]{
10  0.5  \\
11  0.6  \\
12  0.7  \\
};
\end{axis}
\end{tikzpicture}}

\begin{document}

\newcolumntype{P}[1]{>{\centering\arraybackslash}p{#1}}
\begin{table}[htb!]
 \centering
     \begin{tabular}{P{6.5cm} P{6.5cm}}
     \toprule
      Expt1 & Expt2\\
      \cmidrule(r){1-1}\cmidrule(l){2-2}
      \begin{tikzpicture}[baseline=(a.base)]
      \node[outer sep=0pt]  (a){\usebox{\mybox}};
       %%% Change dimensions in $(a.east)+(-0.9,0cm)$
%      \node[anchor=east,outer sep=0pt] at
%               ($(a.east)+(-0.9,0cm)$){\usebox{\mybox}};
      \end{tikzpicture}
      {\usebox{\mybox}}
      &
      \begin{tikzpicture}[baseline=(a.base)]
      \node[outer sep=0pt]  (a){\usebox{\mybox}};
       %%% Change dimensions in $(a.east)+(-0.9,0cm)$
%      \node[anchor=east,outer sep=0pt] at
%               ($(a.east)+(-0.9,0cm)$){\usebox{\mybox}};
      \end{tikzpicture}
      {\usebox{\myboxB}}
      \\ \bottomrule
      \end{tabular}
      \caption{Test}
      \label{tbl:1}
\end{table}

\end{document}

verwandte Informationen