과학적인 형식으로 테이블을 가져오는 방법

과학적인 형식으로 테이블을 가져오는 방법

여기 작동하지 않는 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}

여기에 이미지 설명을 입력하세요

관련 정보