Das ist schon moeglich - möglich – allerdings erfordert es einiges "Hand anlegen", damit man die Tabelle und den Plot synchronisiert. Helfen kann hier `pgfplotstable`, ein Generator fuer für LaTeX tabular Umgebungen.
`tabular`-Umgebungen.
Pgfplotstable liest dieselben Daten wie der plot, der kann die Tabelle transponieren (zeilen (Zeilen und spalten Spalten vertauschen), kann jede Zelle formatieren oder sogar fortgeschrittene Logik zum Definieren der Zellinhalte akzeptieren, und liefert am Ende eine `tabular` Umgebung raus.
Umgebung.
Meine Idee ist, dass man im Plot die x Unit und die Breite einer Tabellenspalte auf denselben Wert `\UNIT` setzt. Der bestimmt dann natuerlich 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 nuetzlich.
![alt text][1]
nützlich.
![Plot mit Datentabelle][1]
\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:
trim axis left
]
\begin{axis}[
% define a suitable width. This is to sync-up with the table:
x=\UNIT,
%xticklabel=\pgfmathprintnumber\tick\%,
% SUPPRESS tick labels. We show all x ticks in the table, see below:
xticklabel=\empty,
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};
\label{plot:value1}
\addlegendentry{$Value 1$}
\addplot[dashed] table [x=i,y=value2]{test.dat};
\label{plot:value2}
\addlegendentry{$Value 2$}
\end{axis}
\end{tikzpicture}
\noindent
% Now the tabluar....
\pgfplotstableread{test.dat}\loadedtable
% we want to transpose it, ok.
\pgfplotstabletranspose{\transposed}{\loadedtable}%
%
% now we want to type set the *transposed* table:
\pgfplotstabletypeset[
% suppress the header row (contains column names):
every head row/.style={output empty row},
%
% skip the first row (which would be the X coordinates:
%skip rows between index={0}{1},
%
% replace '0.0' by '--' :
string replace={0.0}{},empty cells with=--,
%
% insert the small legend images in the column named 'colnames'
% (auto-generated by 'transpose':
columns/colnames/.style={
assign cell content/.code={%
\ifnum\pgfplotstablerow=0
% ... the first row contains the x ticks; keep it empty:
\pgfkeyssetvalue{/pgfplots/table/@cell content}{ }%
\else
% we can get the legend images here since I added
% "\label{plot:<columnname>}" right below all plots
% (see the plot):
\pgfkeyssetvalue{/pgfplots/table/@cell content}{\ref{plot:##1}}%
\fi
},
% suppress the column name on top:
column name=,
% configure the width of the first column:
column type={@{}p{\FIRSTWIDTH}},
},
%
% Here is the cell content for all but the first column (the first
% has its extra style, see above):
assign cell content/.code={%
\def\pgfmathresult{#1}% #1 is the cell's "raw" content
\ifx\pgfmathresult\empty
% Ah - the cell is empty. Keep it that way.
\else
\ifnum\pgfplotstablerow=0
% ah: the first row. That should be formatted in a
% special way as it is the tick label:
\pgfmathprintnumberto[fixed]{#1}\pgfmathresult
% append "\%" to \pgfmathresult:
\expandafter\def\expandafter\pgfmathresult\expandafter{\pgfmathresult \%}%
\else
% any but the first row:
\pgfmathprintnumberto[fixed zerofill]{#1}\pgfmathresult
\fi
\fi
% store our value.
\pgfkeyslet{/pgfplots/table/@cell content}\pgfmathresult%
},
% column type for all but the first:
% - @{} discards space between columns
% - p{\UNIT} makes a left-align column of the prescribed with
% - >{\centering\arraybackslash}...
% causes the following column to be CENTERED
column type={@{}>{\centering\arraybackslash}p{\UNIT}},
%
% shows the resulting tabular code in the log file:
debug,
]{\transposed}
\end{document}
Den gesamten Code fuer für die Tabelle kann man im Grunde in ein Makro auslagern, da er nur noch von dem Eingabe Dateinamen abhaengt. 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 Abbildung, wie dokumentiert dokumentiert, respektiert wurde).
Referenzen: fuer
- Für die Anpassung der Achse ist http://pgfplots.sourceforge.net/pgfplots.pdf , die [Paketdokumentation von pgfplots (pdf)](http://pgfplots.sourceforge.net/pgfplots.pdf), dort kann man auch die gewuenschten Aeusserlichkeiten gewünschten Äußerlichkeiten finden.
Fuer - Für weitere Anpassungen der Tabelle sei auf http://pgfplots.sourceforge.net/pgfplotstable.pdf die [Dokumentation von pgfplotstable (pdf)](http://pgfplots.sourceforge.net/pgfplotstable.pdf) verwiesen, dort finden sich auch hinweise Hinweise auf Zahlformatierung oder die horizontalen Linien.
- Die Programmieraspekte sind in http://pgfplots.sourceforge.net/TeX-programming-notes.pdf erlaeutert [TeX Programming Notes (pdf)](http://pgfplots.sourceforge.net/TeX-programming-notes.pdf) erläutert (falls man das braucht - – das ist sicher optional).
[1]: http://texwelt.de/wissen/upfiles/P.png