pgfplotstableread{mydata.csv} Tabela VS {mydata.csv} eficiência e capacidade para arquivos csv pgfplots

pgfplotstableread{mydata.csv} Tabela VS {mydata.csv} eficiência e capacidade para arquivos csv pgfplots

Estou tentando plotar um arquivo .csv muito grande com várias colunas usando pgfplots. Quero usar a primeira coluna para todos os meus gráficos. Minha rotina habitual é fazer algo como:

\addplot [solid] table [x=A,y=B]{mydata.cvs};
\addplot [solid] table [x=A,y=C]{mydata.cvs};
\addplot [solid] table [x=A,y=nth]{mydata.cvs};

Este trabalho funciona bem em combinação com LuaLatex (memória dinâmica) e não leva muito tempo para gerar o gráfico. Porém, decidi melhorar minha codificação (acho que também poderia aumentar a velocidade de compilação) apenas lendo a tabela uma vez no início usando:

\pgfplotstableread[col sep=semicolon]{mydata.csv}\mytableone

e então:

\addplot [solid] table [x=A,y=B]{\mytableone};
\addplot [solid] table [x=A,y=C]{\mytableone};
\addplot [solid] table [x=A,y=nth]{\mytableone};

Depois de fazer isso, o processo demora MUITO mais tempo e às vezes nem compila e trava. Alguém pode me explicar por que há uma enorme diferença na velocidade de compilação e o que pode estar causando o travamento?

Desculpe, mas não tenho um bom exemplo e não posso compartilhar meus dados (de qualquer forma, são muito grandes).

Obrigado =)

PD também quero selecionar um intervalo na coluna, para isso utilizo esta soluçãoselecione tabelas de linhas pgfplots. Não tenho certeza se isso também pode causar problemas.

Responder1

Sua observação está correta: reler o mesmo arquivo várias vezes é consideravelmente melhor do que reutilizar um "identificador de arquivo".

A razão para esse comportamento inesperado está relacionada à forma como a programação em TeX funciona (ou, neste caso, não funciona): simplesmente não existe um tipo de dados array (eficiente). A única maneira de implementar tipos de dados de array é usar o espaço macro global 'normal', e isso resulta (resultou) em muito mais consumo de memória e atingiu facilmente os limites estritos do TeX.

Lua teria tipos de dados de array eficientes, mas o núcleo pgfplots para tabelas ainda não possui representação Lua dedicada.

Mais alguns detalhes sobre a diferença entre reler os arquivos e lê-los uma vez estão documentados no manual da chave "ler completamente" (certamente não é o melhor local).

informação relacionada