
여기 작동하지 않는 MWE가 있습니다. 과학적인 형식으로 테이블을 가져오고 구성하려면 어떻게 해야 합니까?
\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}
답변1
저자에 따르면
pgfplotstable
, 입력 데이터에서 큰따옴표를 처리하는 제안된 방법은 로 선언하는 것입니다ignore chars={"}
.string type
모든 입력 데이터가 숫자이기 때문에 스타일 선언을 제거했습니다 .CSV 데이터를 구문 분석하려면
\pgfplotstableread
적절한 옵션(col sep
, )을 사용하여 호출해야 합니다.ignore chars
~ 전에\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 }
booktabs
패키지와 다음 스타일 정보를 사용하여 테이블의 멋진 형식을 구현했습니다 .every head row/.style={before row=\toprule, after row=\midrule}, every last row/.style={after row=\bottomrule}
pgfplots
다음 줄을 사용하여 호환성 수준을 1.16으로 높였습니다 .\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}
개선 사항으로 다음 값 내부의 열 번호를 기반으로 적절한 아래 첨자가 있는 LaTeX 수학 공식을 사용하여 테이블 헤더를 개선할 수도 있습니다 /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}