
Hier ist mein nicht funktionierendes MWE. Wie kann ich die Tabelle mit der wissenschaftlichen Formatierung importieren und darstellen?
\documentclass[border=0mm]{standalone}
\usepackage{tikz}
\usepackage{pgfplots}
\usepackage{pgfplotstable}
\begin{filecontents}{data-export-scientific.csv}
"x";"y1";"y2";"y3"
" 1";"8.649e+01";"3.501e+01";"1.013e+01"
" 2";"8.597e+01";"3.672e+01";"6.306e+00"
" 3";"8.667e+01";"4.348e+01";"9.170e+00"
" 4";"8.287e+01";"4.270e+01";"1.052e+01"
" 5";"8.747e+01";"4.081e+01";"1.118e+01"
\end{filecontents}
\begin{document}
\begin{tikzpicture}
\pgfplotstabletypeset[columns/x/.style={string type},
columns/y1/.style={string type},
columns/y2/.style={string type},
columns/y3/.style={string type}]{data-export-scientific.csv}
\pgfplotstableread[col sep=semicolon]{data-export-scientific.csv}\myLoadedTable
\begin{axis}
\addplot[color=blue, only marks]table[x=x, y=y1]{\myLoadedTable};
\end{axis}
\end{tikzpicture}
\end{document}
Antwort1
Laut dem Autor von
pgfplotstable
, die empfohlene Vorgehensweise zum Umgang mit den Anführungszeichen in Ihren Eingabedaten besteht darin, sie mit zu deklarierenignore chars={"}
.Ich habe Ihre
string type
Stildeklarationen entfernt, da alle Ihre Eingabedaten numerisch sind.Sie müssen
\pgfplotstableread
mit den entsprechenden Optionen (col sep
,ignore chars
) aufrufen, um die CSV-Daten zu analysierenVorMöglicherweise wird es\pgfplotstabletypeset
zum Setzen der Tabelle im Dokument verwendet – es sei denn, Sie möchten die Rohdaten mehrmals analysieren, aber das macht meiner bescheidenen Meinung nach nicht viel Sinn.Ich habe den folgenden Stil angewendet:
my numeric col/.style={ sci, sci zerofill, sci sep align, precision=2, sci 10e }
auf alle Spalten außer der ersten in der Satztabelle. Dies geschieht mit:
every column/.code={ \ifnum\pgfplotstablecol>0\relax \pgfkeysalso{my numeric col} \fi }
booktabs
Ich habe mithilfe des Pakets und dieser Stilinformationen eine ansprechende Formatierung der Tabelle implementiert :every head row/.style={before row=\toprule, after row=\midrule}, every last row/.style={after row=\bottomrule}
- Ich habe den
pgfplots
Kompatibilitätsgrad sicherheitshalber mit dieser Zeile auf 1,16 erhöht:\pgfplotsset{compat=1.16}
\documentclass{article}
\usepackage{booktabs}
\usepackage{tikz}
\usepackage{pgfplots}
\pgfplotsset{compat=1.16}
\usepackage{pgfplotstable}
\begin{filecontents}{data-export-scientific.csv}
"x";"y1";"y2";"y3"
" 1";"8.649e+01";"3.501e+01";"1.013e+01"
" 2";"8.597e+01";"3.672e+01";"6.306e+00"
" 3";"8.667e+01";"4.348e+01";"9.170e+00"
" 4";"8.287e+01";"4.270e+01";"1.052e+01"
" 5";"8.747e+01";"4.081e+01";"1.118e+01"
\end{filecontents}
\pgfplotstableread[col sep=semicolon, ignore chars={"}]
{data-export-scientific.csv}\myLoadedTable
\begin{document}
\begin{table}
\centering
\pgfplotstabletypeset[
my numeric col/.style={
sci, sci zerofill, sci sep align, precision=2, sci 10e
},
every column/.code={
\ifnum\pgfplotstablecol>0\relax
\pgfkeysalso{my numeric col}
\fi
},
every head row/.style={before row=\toprule, after row=\midrule},
every last row/.style={after row=\bottomrule}
]{\myLoadedTable}
\caption{My table data}
\end{table}
\begin{figure}
\centering
\begin{tikzpicture}
\begin{axis}
\addplot[color=blue, only marks] table[x=x, y=y1] {\myLoadedTable};
\end{axis}
\end{tikzpicture}
\caption{My plot}
\end{figure}
\end{document}
Zur Verfeinerung können Sie die Tabellenüberschriften sogar verbessern, indem Sie LaTeX-Mathematikformeln mit entsprechenden Indizes verwenden, die auf den Spaltennummern innerhalb des Werts von basieren /pgfplots/table/column name
:
\documentclass{article}
\usepackage{booktabs}
\usepackage{tikz}
\usepackage{pgfplots}
\pgfplotsset{compat=1.16}
\usepackage{pgfplotstable}
\begin{filecontents}{data-export-scientific.csv}
"x";"y1";"y2";"y3"
" 1";"8.649e+01";"3.501e+01";"1.013e+01"
" 2";"8.597e+01";"3.672e+01";"6.306e+00"
" 3";"8.667e+01";"4.348e+01";"9.170e+00"
" 4";"8.287e+01";"4.270e+01";"1.052e+01"
" 5";"8.747e+01";"4.081e+01";"1.118e+01"
\end{filecontents}
\pgfplotstableread[col sep=semicolon, ignore chars={"}]
{data-export-scientific.csv}\myLoadedTable
\begin{document}
\begin{table}
\centering
\pgfplotstabletypeset[
my numeric col/.style={
sci, sci zerofill, sci sep align, precision=2, sci 10e,
column name={$y_{#1}$}
},
every column/.code={
\ifnum\pgfplotstablecol>0\relax
\pgfkeysalso{my numeric col/.expanded={\pgfplotstablecol}}
\fi
},
columns/x/.style={column name={$x$}},
every head row/.style={before row=\toprule, after row=\midrule},
every last row/.style={after row=\bottomrule}
]{\myLoadedTable}
\caption{My table data}
\end{table}
\begin{figure}
\centering
\begin{tikzpicture}
\begin{axis}
\addplot[color=blue, only marks] table[x=x, y=y1] {\myLoadedTable};
\end{axis}
\end{tikzpicture}
\caption{My plot}
\end{figure}
\end{document}