Hallo,

ich würde gerne eine Grafik zeichnen, die mit einer darunterstehenden Datentabelle ergänzt werden soll. Dabei sollen die xticks gleichzeitig die Achsenticks für die Grafik darstellen und eben auch die Überschriften für die Datentabelle. Ganz gut lässt sich das wahrscheinlich an einem Bild erkennen, bei dem das so gemacht wurde (siehe unten). Ich hab auch mal ein Minimalbeispiel vorbereit, das ein paar Daten enthält, mit denen man vielleicht sowas nach dem untenstehenden Vorbild hinbekommen könnte. Schön wäre es natürlich, wenn man die Werte der Dateneinträge an xticks automatisch ausrichten könnte. Vielen Dank schon mal für die Hilfe.

Hier das MB:

Code, hier editierbar zum Übersetzen:
\documentclass{scrbook}
\usepackage[latin1]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{lmodern}
\usepackage[ngerman]{babel}
\usepackage{pgfplots}
\pgfplotsset{compat=1.8}
\usepackage{tikz}
\usepackage{filecontents}
\begin{filecontents}{test.dat}
i value1 value2
0 0.0 0.0
1 1.3 1.0
2 2.9 2.0
3 4.3 3.0
4 2.6 4.0
5 2.2 5.0
\end{filecontents}
\begin{document}
\begin{figure}
\begin{tikzpicture}
\begin{axis}[
width=\linewidth,
height=0.5\linewidth,
xmax=5,
xmin=0,
xtick={0,1,...,5},
ymax=10,
ymin=0,
ytick={0,5,10},
legend style={at={(0.2,0.5)},anchor=east,draw=none},
]
\addplot[solid] table [x=i,y=value1]{test.dat};
\addlegendentry{$Value 1$}
\addplot[dashed] table [x=i,y=value2]{test.dat};
\addlegendentry{$Value 2$}
\end{axis}
 
הההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההה
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

alt text

gefragt 19 Dez '13, 09:13

josephine's gravatar image

josephine
944263035
Akzeptiert-Rate: 0%

bearbeitet 19 Dez '13, 11:29

Thorsten's gravatar image

Thorsten
1.6k325

Da drängt sich mir der Hinweis auf pgfplotstable auf. Außerdem gibt es AFAIK schon Version 1.9 von pgfplots

(19 Dez '13, 10:53) sudo

Das ist schon möglich – allerdings erfordert es einiges "Hand anlegen", damit man die Tabelle und den Plot synchronisiert. Helfen kann hier pgfplotstable, ein Generator für LaTeX tabular-Umgebungen.

Pgfplotstable liest dieselben Daten wie der plot, der kann die Tabelle transponieren (Zeilen und Spalten vertauschen), kann jede Zelle formatieren oder sogar fortgeschrittene Logik zum Definieren der Zellinhalte akzeptieren, und liefert am Ende eine tabular Umgebung.

Meine Idee ist, dass man im Plot die x Unit und die Breite einer Tabellenspalte auf denselben Wert \UNIT setzt. Der bestimmt dann natürlich die Breite der gesamten Abbildung.

Das, was ich da jetzt ausprobiert habe, hat doch einiges an Zeilen (auch wegen den Kommentaren)... ich hoffe, es ist trotzdem nützlich.

Plot mit Datentabelle

Code, hier editierbar zum Übersetzen:
\documentclass{article}
\usepackage{array}
\usepackage{pgfplotstable}
\usepackage{pgfplots}
\pgfplotsset{compat=1.8}
\usepackage{tikz}
\usepackage{filecontents}
\begin{filecontents}{test.dat}
i value1 value2
0 0.0 0.0
1 1.3 1.0
2 2.9 2.0
3 4.3 3.0
4 2.6 4.0
5 2.2 5.0
\end{filecontents}
\begin{document}
\thispagestyle{empty}
% "First width" is the width of the first column. The first column
% should be BEFORE the plot, i.e. before the "x=0" line:
\def\FIRSTWIDTH{0.4cm }
%
% "Unit" is the width of one unit in the axis:
\def\UNIT{2cm }
\noindent
% align properly. This works if and only if we have 'trim axis left' (see below)
\pgfmathparse{%
\FIRSTWIDTH% the first column is just description.
+0.5*\UNIT% and: our table *centers* the units. the 0.5*unit respects the centering.
}%
\hspace{\pgfmathresult pt }%
%
\begin{tikzpicture}[
% excludes everything left of the left axis line from the
% picture's bounding box such that we have a well-defined bounding
% box:
 
הההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההה
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

Den gesamten Code für die Tabelle kann man im Grunde in ein Makro auslagern, da er nur noch von dem Eingabe Dateinamen abhängt. Er erwartet noch, dass jeder Plot mit \label markiert ist und dass \FIRSTWIDTH und \UNIT definiert sind (und bei der Platzierung der Abbildung, wie dokumentiert, respektiert wurde).

Referenzen:

Permanenter link

beantwortet 21 Dez '13, 15:34

cfeuersaenger's gravatar image

cfeuersaenger
3.7k23
Akzeptiert-Rate: 34%

bearbeitet 21 Dez '13, 21:03

Johannes's gravatar image

Johannes
7.3k294566

\begin{table}[htbp] \centering \begin{tabular}{ccccc} \toprule Tiefe (cm) & \multicolumn{2}{c}{7,5 MHz} & \multicolumn{2}{c}{12 MHz} \ \cline{2-3} \cline{4-5} & axial (mm) & lateral (mm) & axial (mm) & lateral (mm) \ \midrule 1 &1 &1,5 &1 &1,5 \ 2 &1 &2 &1 &2 \ 3 &1 &2,5 &1 &2 \ 4 &1 &2,5 &1 &2,5 \ 5 &1,5 &3,5 &1 &3 \ 6 &1,5 &4 &1,5 &4 \ 7 &1 &4,5 &1,5 &4,5 \ 8 &1,5 &5 &1,5 &5 \ 9 &1,5 &4,5 &2 &5 \ 10 &1,5 &4,5 &2 &5 \ 11 &1,5 &5 &2 &5 \ \bottomrule \end{tabular} \caption{ Bestimmung der axialen und lateralen Auflösung „von Hand“ als Vergleichswert} \label{tab:AufloesungVonHand} \end{table} ich will diese Tabelle als Grafik darstellen! kann jmd mir dabei helfen?

Permanenter link

beantwortet 11 Okt '23, 15:49

alomari's gravatar image

alomari
111
Akzeptiert-Rate: 0%

Deine Antwort
[Vorschau ausblenden]

Folgen dieser Frage

Per E-Mail:

Wenn sie sich anmelden, kommen Sie für alle Updates hier in Frage

Per RSS:

Antworten

Antworten und Kommentare

Frage-Themen:

×731
×298
×258

gestellte Frage: 19 Dez '13, 09:13

Frage wurde gesehen: 14,199 Mal

zuletzt geändert: 11 Okt '23, 15:49

Willkommen, erstes Mal hier? Schau mal unter FAQ!

×