
Aquí está mi MWE que no funciona. ¿Cómo puedo importar y trazar la tabla con el formato científico?
\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}
Respuesta1
Según el autor de
pgfplotstable
, la forma sugerida de lidiar con las comillas dobles en sus datos de entrada es declararlas conignore chars={"}
.Eliminé tus
string type
declaraciones de estilo porque todos tus datos de entrada son numéricos.Debe llamar
\pgfplotstableread
con las opciones apropiadas (col sep
,ignore chars
) para analizar los datos CSVantesposiblemente use\pgfplotstabletypeset
para componer la tabla en el documento, a menos que desee analizar los datos sin procesar varias veces, pero esto no tiene mucho sentido en mi humilde opinión.Apliqué el siguiente estilo:
my numeric col/.style={ sci, sci zerofill, sci sep align, precision=2, sci 10e }
a todas las columnas excepto a la primera de la tabla tipográfica. Esto se hace con:
every column/.code={ \ifnum\pgfplotstablecol>0\relax \pgfkeysalso{my numeric col} \fi }
Implementé un buen formato de la tabla usando el
booktabs
paquete y esta información de estilo:every head row/.style={before row=\toprule, after row=\midrule}, every last row/.style={after row=\bottomrule}
- Aumenté el
pgfplots
nivel de compatibilidad a 1.16 por si acaso usando esta línea:\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}
Como mejora, incluso puedes mejorar los encabezados de las tablas usando fórmulas matemáticas de LaTeX con subíndices adecuados basados en los números de columna dentro del valor de /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}