Plotar dados em linha com pgfplots

Plotar dados em linha com pgfplots

Tenho alguns dados armazenados em arquivo que gostaria de plotar com pgfplots. Os dados são armazenados em linhas, ou seja, o arquivo se parece com isto:

a  1 2 3 4 5
b  6 7 8 9 0
c  2 4 6 8 0
...

No entanto, o Pgfplots espera que os dados sejam em colunas. Para resolver isso, transponho a tabela usando \pgfplotstabletranspose. No entanto, isso parece ter problemas com os títulos das linhas.

O exemplo mínimo a seguir mostra o que consegui até agora.

\documentclass{article}

\usepackage{pgfplots}
\usepackage{pgfplotstable}

\begin{document}

  \begin{tikzpicture}
    \begin{axis}
      \pgfplotstableread{
        x  1  2  3  4  5
        y  1  4  9 16 25
      }\datatable;
      \pgfplotstabletranspose\datatable{\datatable};

      \addplot table {\datatable};
    \end{axis}
  \end{tikzpicture}

\end{document}

A saída desejada é o seguinte gráfico:

insira a descrição da imagem aqui

Infelizmente, recebo o seguinte erro:

Erro matemático do pacote PGF: não foi possível analisar a entrada 'x' como um número de ponto flutuante, desculpe.

(Curiosamente, ao usar -interaction=nonstopmodeo gráfico é gerado conforme desejado, mas o erro é irritante...)

Posso dizer de alguma forma pgfplotsque a primeira coluna contém os títulos das linhas para me livrar das mensagens de erro?

Responder1

É necessário treinar \pgfplotstabletransposepara manter os nomes das colunas.

Adicione uma linha fictícia aos dados, contendo os valores colnames 0 1 2 3 4 (embora colnamespossa ser substituído basicamente por qualquer coisa). Ligar para

\addplot table[x=xrow,y=yrow] {\otherdatatable}; 

(Usei outra macro para a tabela transposta. Não tenho certeza se usar a mesma macro não seria saudável)

\documentclass{article}

\usepackage{pgfplots}
\usepackage{pgfplotstable}

\pgfplotsset{compat=1.12}
\begin{document}

  \begin{tikzpicture}
    \begin{axis}
      \pgfplotstableread{%
          colnames    0  1  2  3  4
          xrow        1  2  3  4  5
          yrow        1  4  9 16 25
      }\datatable;
      \pgfplotstabletranspose[colnames from=colnames]\otherdatatable{\datatable};

 \addplot table[x=xrow,y=yrow] {\otherdatatable};
    \end{axis}
  \end{tikzpicture}

\end{document}

Usei xrowe yrowpara evitar uma possível confusão ( x=x,y=y), já que não conheço o funcionamento de \pgfplotstableetc.

insira a descrição da imagem aqui

informação relacionada