Qual software fornece um bom fluxo de trabalho, desde a plotagem simples de alguns pontos de dados até a criação de gráficos no nível de publicação com estilos detalhados, composição matemática e "qualidade profissional"?
Isso está um pouco relacionado à questão de David ( Quais atributos tornam uma figura uma qualidade profissional? ), Mas o foco não está nos atributos, mas no software ou no fluxo geral de trabalho para chegar lá. Tenho experiência superficial com vários programas, Gnuplot, Origin, Matplotlib, TikZ / PGFplot, Qtiplot, mas fazer análise de dados e bons números ao mesmo tempo parece bastante difícil de fazer.
Existe algum software que permita isso ou devo apenas ir mais fundo em um dos pacotes?
Edit: Meu fluxo de trabalho atual é uma mistura de componentes diferentes, que mais ou menos funcionam juntos, mas no total não é realmente eficiente e acho que isso é típico para vários cientistas em um laboratório universitário. Normalmente, é uma cadeia que começa desde o experimento até a publicação como esta:
- Obtenha dados experimentais (geralmente no formato ASCII, mas com layout diferente, por exemplo, cabeçalhos, comentários, número de colunas)
- Gráfico rápido dos dados para verificar se nada deu errado no Origin, no Gnuplot ou no programa de plotagem arcana escrito há 20 anos.
- Análise mais detalhada dos dados: subtraindo contribuições em segundo plano, analisando dependências e correlações, ajustando-se a modelos teóricos. Muitos cientistas usam o Origin para esta tarefa, mas o uso de Matlab e Python / Scipy / Numpy está aumentando.
- Criando figuras profissionais, isso envolve o ajuste às diretrizes do diário, composição matemática e edição geral. No momento, eu uso o Origin para isso, mas ele tem várias desvantagens (tente obter uma largura de linha de exatamente 0,5pt, não é possível). Para combinar / polir figuras, eu uso principalmente o Adobe Illustrator, pois ele pode lidar com a importação / exportação de documentos PDF muito bem, mas eu preferiria não ter que passar por duas etapas para cada diagrama.
Adicionei um exemplo de como isso pode parecer no final (como isso foi criado principalmente pela alteração manual de qualquer coisa é doloroso e qualquer coisa que forneça uma interface, por exemplo, para definir a largura de linha para todos os elementos seria bom):
fonte
Respostas:
Se você tem alguma experiência com Python (ou não), eu recomendaria o uso do software científico Python disponível ( SciPy , Pandas ), ...) junto com o Matplotlib . Sendo um ambiente de programação, você tem controle total sobre seus fluxos de dados, manipulações e plotagem de dados. Você também pode usar os "aplicativos completos" Mayavi2 ou Veusz .
fonte
Com base no que você está dizendo, uma linguagem de script de uso geral é provavelmente a melhor opção, desde que ela tenha algum tipo de recurso gráfico que você possa acessar (incorporado ou importado).
Nesse sentido, o MATLAB funcionará, embora você precise brincar com larguras de linhas, símbolos e eixos para obter gráficos com qualidade de apresentação. De acordo com seus critérios, eu diria que a grande fraqueza do MATLAB é a composição matemática detalhada; O MATLAB pode usar alguns rótulos TeX, mas existem alguns comandos do LaTeX que ele não pode manipular, então lembro de ter que voltar e recortar e colar alguns rótulos do LaTeX de um PDF no Adobe Illustrator.
O Python + NumPy funcionará para importações de dados, pois
numpy.loadtxt
torna a importação de dados de texto indolor. Nesse ponto, você pode escolher entre matplotlib e Gnuplot (que possui uma interface Python via Gnuplot.py ; nenhum desenvolvimento ativo na interface desde 2008, mas, novamente, o Gnuplot muda muito mais, mesmo que continue adicionando lançamentos? ) O wrapper PyAsy de MatthewEmmett também pode funcionar, dependendo do que você gostaria de fazer. O Matplotlib possui ótimas fontes matemáticas (como observado por Barron), e as manipulações de dados podem ser feitas usando NumPy, SciPy ou qualquer outro pacote Python que você queira lançar em seus dados.O problema que tive com o gnuplot por si só é que ele foi realmente construído apenas para plotagem. Não estava aparente para mim como manipular dados dentro da linguagem de script gnuplot. Eu essencialmente fiz toda a minha manipulação de dados com antecedência antes de enviá-la para texto porque não conseguia descobrir como fazê-lo de outra forma. Você pode usar o gnuplot para avaliar fórmulas e fazer algumas manipulações, mas, para mim, o Python tem uma sintaxe muito mais natural e é de maior utilidade geral que o gnuplot. Não quero ter que aprender outro idioma apenas para fazer uma coisa, a menos que seja um idioma realmente natural e fácil de aprender. (Ou a menos que eu seja forçado a fazê-lo.)
O Tecplot 360 tem um tipo semelhante de problema. O Tecplot 360 produz gráficos incríveis, especialmente em 3D. Há coisas que você pode fazer com o Tecplot 360 usando uma GUI relativamente fácil de aprender que você provavelmente não faria em outro pacote de plotagem. A última vez que usei o Tecplot foi há 6 ou 7 anos; aparentemente, eles adicionaram muitas funcionalidades desde então. A manipulação de dados pode ser feita através da indexação, fatiamento ou estabelecimento de zonas. Quantidades derivadas podem ser calculadas usando equações. Você também pode realizar a transformação de Fourier de seus dados, executar interpolação (ou krigagem) e executar várias outras coisas. Não está claro como fazer a composição matemática. Eu acho que você pode cortar a saída HTML do Tecplot e adicionar MathJax ou MathML? As desvantagens, em minha opinião, em relação ao Tecplot são que ele não é gratuito (o que significa que, como ferramenta, talvez você não consiga levá-lo de um emprego para outro), a duvidosa composição matemática e a manipulação de dados complexos por script exige o aprendizado da linguagem macro do Tecplot. A principal vantagem é que sua capacidade de plotagem 3D ultrapassa o matplotlib e o MATLAB por um longo tempo. É possível agrupar dados em lote usando a linguagem de macro / script do Tecplot e chamar scripts externos do Python (com algumas funcionalidades limitadas). Além disso, semelhante ao MATLAB, há uma GUI na qual você pode recorrer se não quiser aprender a usar scripts do Tecplot. (A interface gráfica do Tecplot é muito mais completa que a do MATLAB.) A principal vantagem é que sua capacidade de plotagem 3D ultrapassa o matplotlib e o MATLAB por um longo tempo. É possível agrupar dados em lote usando a linguagem de macro / script do Tecplot e chamar scripts externos do Python (com algumas funcionalidades limitadas). Além disso, semelhante ao MATLAB, há uma GUI na qual você pode recorrer se não quiser aprender a usar scripts do Tecplot. (A interface gráfica do Tecplot é muito mais completa que a do MATLAB.) A principal vantagem é que sua capacidade de plotagem 3D ultrapassa o matplotlib e o MATLAB por um longo tempo. É possível agrupar dados em lote usando a linguagem de macro / script do Tecplot e chamar scripts externos do Python (com algumas funcionalidades limitadas). Além disso, semelhante ao MATLAB, há uma GUI na qual você pode recorrer se não quiser aprender a usar scripts do Tecplot. (A interface gráfica do Tecplot é muito mais completa que a do MATLAB.)
Ferramentas baseadas em LaTeX, como TikZ e PGFPlots, parecem não ter sido criadas para o seu caso de uso. O ponto fraco aqui é a manipulação de dados; TikZ e PGFPlots são ótimas ferramentas de LaTeX. Eu gostaria de saber como usá-los melhor. Como eles são LaTeX, acho que o fluxo de trabalho está cortando e colando os dados necessários no LaTeX e plotando-os. É possível executar programas dentro do LaTeX, mas não vejo como esse recurso necessariamente o ajudaria, já que, para uma apresentação ou documento, o caso de uso que você está descrevendo sugere que você provavelmente só manterá o produto final. Talvez você esteja bem com esse fluxo de trabalho; ambas as ferramentas têm a reputação de serem bem projetadas e produzir figuras de alta qualidade.
Por fim, o Adobe Illustrator é uma ótima ferramenta para retocar gráficos, como você disse; as deficiências também são, como você disse, falta de capacidade de script ou repetibilidade, mas nada supera um programa de edição de gráficos se você quiser fazer pequenos ajustes.
fonte
Penso que esta é uma excelente pergunta, e que está na vanguarda da minha mente agora. Ao ler a maioria dos periódicos de matemática, o Matlab parece aceitável, mas simplesmente não mede o IMHO em alguns dos belos gráficos e diagramas que aparecem em periódicos como PNAS, Nature, PLoS ONE etc.
Depois de discutir exatamente essa questão em meu grupo de pesquisa há várias semanas, ainda não chegamos a uma conclusão real sobre qual o melhor pacote. Descobrimos que a maioria das comparações de softwares gráficos em documentação, blogs ou outras fontes da Web são amplamente inúteis para determinar qual pacote é melhor para um determinado objetivo.
Eu acho que o que realmente ajudaria o usuário médio que não é especialista em todos / muitos desses pacotes é ter um pequeno conjunto de exemplos muito bem definidos que poderiam ser usados como uma espécie de "referência gráfica" (de maneira semelhante). como benchmarks de CFD ). Até onde eu sei, nada disso existe atualmente.
No mínimo, eu gostaria de ver:
Os dados seriam fornecidos para o número 1-3, e uma foto ou diagrama "original" para o número 4. Para cada exemplo, o código (entrada) e as imagens (saída) seriam postadas. Isso permitiria ao leitor julgar mais facilmente qual pacote é adequado para eles, tanto em termos de qualidade de imagem quanto de complexidade do código.
Meu plano é fazer algo assim no meu grupo nos próximos meses para os números 1, 2, 4 e um pequeno número de pacotes, incluindo Matlab, pgf / TikZ, python / scipy. Se houver interesse, eu poderia postar isso publicamente.
Então, enquanto isso não é uma resposta à pergunta originalmente publicado ainda (e peço desculpas por isso) poderia ser uma resposta dentro de alguns meses.
fonte
Eu geralmente uso o gnuplot . Pode ser difícil de aprender, mas produz gráficos muito limpos. Também pode ser configurado para produzir plotagens no formato postscript encapsulado (.eps), o que facilita a incorporação em documentos escritos em .LATEX
fonte
Outro pacote de software a considerar é o Asymptote . A assíntota é na verdade uma linguagem de programação (com uma sintaxe semelhante ao C ++) que produz saída baseada em vetor. Um recurso interessante é que o texto é renderizado com LaTeX (incluindo equações matemáticas), para que o texto em suas figuras seja consistente com seu documento.
Eu escrevi um wrapper Python para o Asymptote chamado PyAsy para que eu pudesse passar matrizes NumPy para o mecanismo Asymptote e fazer algumas plotagens básicas. É bastante difícil e não está completo, mas pode ser útil.
De qualquer forma, a qualidade da saída do Asymptote é muito boa.
Editar: Além do exposto, achei o Fabric muito útil para iniciar trabalhos remotos, sincronizar diretórios e criar binários, buscar dados de execução e / ou iniciar scripts de análise remota. É uma biblioteca Python bastante leve que facilita a execução de comandos remotos (e com scripts).
fonte
Deixe-me escrever uma breve revisão da funcionalidade gráfica do Mathematica, pois é com isso que estou familiarizado.
O que é que isso pode fazer?
Para ver um exemplo, consulte a galeria de códigos do Mathematica no site da Wolfram. Não é especificamente sobre visualização, mas quase todos os exemplos incluem algumas plotagens.
Você também pode navegar pelas tags de plotagem (básica) e gráfica (mais avançada) do Mathematica.SE
É possível criar sua imagem de exemplo de uma maneira totalmente automatizada (não é necessário pós-processamento manual).
Forças
Todos os gráficos são especificados de forma declarativa (como SVG - você não diz ao sistema para desenhar algo, apenas lista os objetos de gráficos vetoriais). Os gráficos são o mesmo tipo de expressões do Mathematica que qualquer outra coisa no sistema, eles são exibidos apenas de uma maneira especial. Isso significa que os gráficos podem ser facilmente transformados e processados após serem criados - isso também se aplica aos gráficos criados pelas funções de plotagem.
A maneira rápida e simples de criar gráficos é usar funções de plotagem de alto nível e definir muitas opções para personalizar sua saída. Se não houver função para o gráfico preciso de que você precisa, você pode montar os gráficos a partir dos primitivos gráficos (o que também é bastante fácil ).
A funcionalidade de plotagem de funções matemáticas é excelente. até onde eu sei, é líder de classe. As amostras do Mathematica funcionam de forma adaptável (tanto em 2D quanto em 3D), para que um gráfico suave possa ser gerado de forma rápida e automática. Singularidades, descontinuidades etc. são detectadas simbolicamente através da plotagem de funções.
Você pode produzir figuras para um tamanho de impressão específico e verifique se elas se encaixam bem com o texto ao redor de uma publicação (por exemplo, tamanho da fonte e estilos). Em 2D, existem dois tipos de coordenadas: coordenadas de plotagem que correspondem aos seus dados e coordenadas absolutas especificadas nos pontos da impressora. O primeiro é dimensionado ao redimensionar o gráfico, o último não. O texto usa coordenadas absolutas por padrão, o que significa que o tipo de 8 pontos terá 8 pontos, independentemente de a mesma figura ser exportada no tamanho de 7 ou 14 cm. Isso torna possível ter tamanhos de fonte consistentes com o texto da publicação.
Tipografia incorporada para fórmulas matemáticas. O pacote de terceiros do MaTeX fornece integração com o LaTeX para uma composição de fórmula de excelente qualidade. (Divulgação: eu sou o autor.)
Você pode fazer todo o processamento de dados no mesmo sistema. Geralmente, com um pouco de trabalho, o processo completo de criação de figuras pode ser automatizado (até mesmo alguns aspectos avançados ), evitando a necessidade de pós-processamento manual em software como o Adobe Illustrator. Isso é importante quando, no último minuto, você descobre um pequeno problema e precisa gerar novamente a figura.
Fraquezas
Ter números com várias subparcelas e ter um alinhamento preciso entre os sistemas de coordenadas das subparcelas pode ser difícil.
O pacote SciDraw (de terceiros) corrige isso e fornece controle detalhado sobre todos os aspectos da figura. A desvantagem deste pacote é que é preciso mais esforço para definir números.
Gráficos 3D não exportam bem para formatos vetoriais. A exportação de uma versão de bitmap é boa.
Se sua instituição ainda não possui uma licença, isso custa dinheiro.
fonte
Se você já conhece o TikZ, pode estar interessado em R e no tikzDevice ; Aqui está um exemplo: tikzDevice - Saída TikZ de R , aqui está outro exemplo: Diagramas TikZ com R: tikzDevice .
fonte
Aprofundar-se nos gráficos de PGF:
1) pode fazer diagramas em 3D: python-matplotlib não pode fazê-los, o gnuplot é feio em comparação
2) possui fontes consistentes em tamanho e família com o documento base)
3) pode ser modelado para esquemas de cores específicos
Não há mais nada parecido no mercado. :)
fonte
Eu acho que o Tecplot é bastante poderoso quando se trata de visualização e manipulação de dados.
fonte
Tentarei dar uma visão da minha experiência limitada, que abrange apenas alguns tipos de gráficos: gráficos de dados 2D, gráficos de dispersão e diagramas baseados em gráficos (árvores e gráficos, fluxogramas); mas primeiro permita-me desviar um pouco da pergunta:
Primeiro, gostaria de dizer que a importância de produzir parcelas de alta qualidade é frequentemente negligenciada. Os gráficos não são apenas para exibição de dados, mas, se usados com eficácia, podem comunicar idéias complexas que geralmente não podem ser expressas com clareza no texto. Parece-me que este não é o lugar apropriado para discutir o que constitui, os benefícios e as desvantagens de um bom enredo, mas, se estiver interessado, olhe aqui .
Em segundo lugar, me arrependi com mais frequência de usar um enredo meio cozido do que passar um tempo em um enredo de alta qualidade. O motivo é que uma plotagem incorreta pode mentir para você, por exemplo, se estiver usando uma plotagem incompleta para analisar rapidamente os dados que você pode não ter normalizado adequadamente ou usando plotagens não tão boas para fazer comparações visuais (o olho geralmente pode ser muito perdoador ou muito enganador). Por isso, eu sempre recomendo preparar gráficos como se fossem mostrados a uma pessoa que não está familiarizada com os resultados. Isso pode economizar seu tempo e melhorar seu trabalho. Além disso, você tem o benefício adicional de que o material de apresentação estará pronto para a próxima apresentação / seminário / artigo.
Agora, para responder à pergunta ,
Na minha experiência, é sempre melhor separar o processamento de dados da ferramenta de plotagem real e das ferramentas de manipulação de imagem. Para processamento de dados, uso python, pois é muito flexível e não encontrei um formato de arquivo que não possa ser facilmente manipulado através de python. Além disso, as bibliotecas numpy e scipy podem ser poderosas ferramentas de manipulação de dados numéricos.
No python, eu não vi uma ferramenta de plotagem que fornece controle sobre todos os detalhes de formatação. Descobri que são os detalhes que fazem uma grande diferença quando você tenta integrar imagens enquanto formata um papel em látex. Por exemplo, o controle do espaço em branco e as proporções de parcelas aproximadas podem ser uma dor de cabeça com o matplotlib (não é impossível, mas não vale o meu tempo); isso é muito importante se você tiver espaço limitado, como costuma ser o caso em periódicos e conferências. papéis.
Na minha experiência, descobri que o GNUPLOT é a melhor ferramenta para formatar e produzir plotagens 2D e plotagens de dispersão. Dá muito controle sobre todos os detalhes do seu enredo. E você pode produzir gráficos de alta qualidade (imagens vetoriais) em preto e branco ou em cores. O alto nível de controle torna o GNUPLOT um pouco mais difícil de aprender, e algumas vezes coisas simples podem dar um pouco de trabalho, mas se você começar com um exemplo, ele pode simplificar as coisas. Normalmente, olho para esses dois sites em busca de inspiração, veja o site não tão frequente ou as demos oficiais aqui .
Às vezes, os gráficos produzidos pelo GNUPLOT podem ser bastante grandes (no intervalo de MB) e o diário pode rejeitar os arquivos (isso aconteceu comigo com alguns gráficos de dispersão muito coloridos). Eu usei e recomendo o Imagemagick , uma ferramenta de linha de comando que permite converter, editar e compactar imagens (usei para gerar e editar jpegs de alta qualidade e reduzir significativamente o tamanho do arquivo). Tentei outras ferramentas que usavam a compactação automática de dados, isso se mostrou especialmente problemático devido ao delicado equilíbrio entre artefatos de imagem e compactação.
Também produzi uma boa parte de diagramas (geralmente para apresentações). Descobri que, se vou usar um diagrama uma única vez (não um artigo), o aplicativo Keynote (OSX) e salvar em pdf é bom o suficiente. No entanto, quando uma imagem é usada várias vezes, a qualidade da apresentação é mais importante e o TikZ é minha ferramenta preferida. Acho o TikZ um pouco difícil de usar, mas se você começar com um exemplo , é muito mais fácil.
Por fim, faço a maior parte do meu trabalho na linha de comando para integrar as diferentes ferramentas usadas com o bash ou python.
fonte
Meu voto rápido é para QtiPlot.
Embora não seja perfeito, ele fornece a melhor combinação de facilidade da GUI, juntamente com scripts em python, então o que você realmente está fazendo é "Qtiplot / Python / (Illustrator ou Inkscape)". O Qtiplot é extensível, então você pode criar seus próprios scripts / macros que podem executar comandos python para abrir e processar dados e depois despejá-los em uma tabela. Você pode plotá-los manualmente ou automaticamente. Também é possível configurá-lo para funcionar com a tipografia do LaTeX com um tipógrafo disponível na Internet ou um tipógrafo local, para que você possa colocar fórmulas matemáticas nos títulos / eixos / marcações da plotagem.
Os gráficos podem ser exportados para qualquer formato desejado, mas o formato que funciona melhor é, sem dúvida, o SVG. Os arquivos SVG podem ser retocados no inkscape, se você quiser, que também possui habilidades de digitação do LaTeX.
Embora o MatPlotLib seja ótimo, sua maior desvantagem é ter que codificar manualmente absolutamente tudo (como qualquer solução de plotagem de script). O QtiPlot é ótimo porque você pode criar scripts / automatizar o processamento e a plotagem de dados com grande funcionalidade Python e passar um gráfico de corte aproximado para uma GUI que permitirá que você o ajuste manualmente e faça todos os tipos de corte / colagem / manipulação de GUI isso é muito mais rápido, caso a caso, para análise de dados. Você também pode definir dimensões precisamente com o script e também manipular as dimensões com a GUI, algo que não pode ser feito com o matplotlib.
Suponho que depende de como você se sente sobre as soluções de plotagem QtiPlot. Eu achei que era muito capaz, mas é tudo uma curva de aprendizado bastante acentuada.
fonte
Estou surpreso que ninguém tenha mencionado as excelentes ferramentas matlab2tikz e matplotlib2tikz de Nico Schlömer . Se você estiver usando o LaTeX para a preparação de documentos e o Matlab ou o Python para processamento de dados, poderá obter facilmente gráficos vetoriais de alta qualidade, que podem ser postados no conteúdo do seu coração:
matlab2tikz('figure.tex')
(oumatplotlib2tikz
).figure.tex
a gosto (substitua o texto do rótulo por matemática adequada, altere cores, largura da linha, posicionamento da legenda, estilo do eixo etc.), consulte o manual pgfplots (ou muitas perguntas sobre pgfplots na troca de pilhas TeX).includegraphics
colocar\input{figure.tex}
(e não se esqueça de incluir\usepackage{pgfplots}
no preâmbulo).\input{figure.tex}
por\includegraphics{figure.pdf}
.fonte
Se você não está procurando scripts, dê uma olhada no MagicPlot. Não é tão rico em recursos como o Origin (por exemplo, pode produzir apenas gráficos 2D), mas nunca tive problemas com a largura da linha e outras propriedades. Os gráficos são ótimos anti-alias, embora o redesenho seja rápido o suficiente. Além de montagem útil.
fonte
O Tecplot 360 é bom para processar grandes dados e produzir plotagens com qualidade de publicação. Possui interfaces completas e de script poderosas para processar os dados. Parece-me que faz tudo o que você precisa para pós-processamento.
Um erro comum é recorrer ao Excel. Não. Ele não lembra o layout, o intervalo X, o mapa de cores. Não anima. Ele usa planilhas volumosas e feias para trabalhar com os dados.
Obviamente, você não encontrará uma ferramenta que faça pós-processamento e edição de texto, e escolher um editor de texto razoável para suas publicações é outra questão importante. Não use o MS Word, seu gerenciador de citações é feio. Eu uso o LyX ou qualquer outra ferramenta de látex disponível para o sistema operacional que estou usando.
Ah, e quando você precisar publicar PDF, inclua um link para o LaTeX, o Word ou qualquer outro formato com matemática legível. Em PDF, não é.
fonte