So importieren Sie eine Tabelle mit wissenschaftlicher Formatierung

So importieren Sie eine Tabelle mit wissenschaftlicher Formatierung

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 vonpgfplotstable, die empfohlene Vorgehensweise zum Umgang mit den Anführungszeichen in Ihren Eingabedaten besteht darin, sie mit zu deklarieren ignore chars={"}.

  • Ich habe Ihre string typeStildeklarationen entfernt, da alle Ihre Eingabedaten numerisch sind.

  • Sie müssen \pgfplotstablereadmit den entsprechenden Optionen ( col sep, ignore chars) aufrufen, um die CSV-Daten zu analysierenVorMöglicherweise wird es \pgfplotstabletypesetzum 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
    }
    
  • booktabsIch 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 pgfplotsKompatibilitä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}

Bildbeschreibung hier eingeben

Bildbeschreibung hier eingeben

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}

Bildbeschreibung hier eingeben

verwandte Informationen