Quel logiciel fournit un bon flux de travail depuis le traçage simple de quelques points de données jusqu'à la création de graphiques de niveau publication avec des styles détaillés, une composition mathématique et une "qualité professionnelle"?
Ceci est un peu lié à la question de David ( quels attributs rendent une figure de qualité professionnelle? ) Mais l'accent n'est pas mis sur les attributs mais sur le logiciel ou le processus général pour y arriver. J'ai une expérience superficielle avec un certain nombre de programmes, Gnuplot, Origin, Matplotlib, TikZ / PGFplot, Qtiplot, mais l'analyse de données et de beaux chiffres en même temps semble plutôt difficile à faire.
Existe-t-il un logiciel permettant cela ou devrais-je creuser un peu plus profondément dans l'un des packages?
Edit: Mon flux de travail actuel est un mélange de différents composants, qui fonctionnent plus ou moins ensemble mais au total, ils ne sont pas vraiment efficaces et je pense que cela est typique pour un certain nombre de scientifiques dans un laboratoire universitaire. Typiquement, il s’agit d’une chaîne allant de l’expérience à la publication comme ceci:
- Obtenir des données expérimentales (généralement sous forme ASCII, mais avec une présentation différente, par exemple en-têtes, commentaires, nombre de colonnes)
- Tracé rapide des données pour vérifier si tout se passait bien dans Origin, Gnuplot ou le programme de complot profanes écrit il y a 20 ans.
- Analyse plus détaillée des données: soustraction des contributions de base, analyse des dépendances et des corrélations, adaptation aux modèles théoriques. De nombreux scientifiques utilisent Origin pour cette tâche, mais certaines utilisations de Matlab et Python / Scipy / Numpy augmentent.
- Pour créer des figures professionnelles, cela implique de s’ajuster aux directives du journal, à la composition mathématique et à l’édition générale. Pour le moment, j'utilise Origin pour cela, mais cela présente plusieurs inconvénients (essayez simplement d'obtenir une largeur de raie exactement de 0.5pt, ce n'est pas possible). Pour combiner / polir les figures, j'utilise principalement Adobe Illustrator, car il gère parfaitement l'import / export de documents PDF, mais je préférerais ne pas avoir à passer par deux étapes pour chaque diagramme.
J'ai ajouté un exemple de ce à quoi cela pourrait ressembler à la fin (comme cela a été créé principalement à la main, tout ce qui est modifié est pénible et tout ce qui fournit une interface, par exemple, pour définir la largeur de trait de tous les éléments serait bien):
la source
Réponses:
Si vous avez un peu d'expérience avec Python (ou même pas), je vous recommanderais d'utiliser le logiciel scientifique Python disponible ( SciPy , Pandas ), ...) avec Matplotlib . Étant un environnement de programmation, vous contrôlez entièrement vos flux de données, vos manipulations et votre traçage. Vous pouvez également utiliser les "applications complètes" Mayavi2 ou Veusz .
la source
Selon ce que vous dites, un langage de script à usage général est probablement votre meilleur choix, dans la mesure où il dispose d'une sorte de fonction graphique à laquelle vous pouvez accéder (qu'elle soit intégrée ou importée).
Dans cette optique, MATLAB fonctionnera, mais vous devrez jouer avec les largeurs de trait, les symboles et les axes pour obtenir des graphiques de qualité présentation. Compte tenu de vos critères, je dirais que la grande faiblesse de MATLAB est la composition mathématique détaillée; MATLAB peut utiliser certaines étiquettes TeX, mais certaines commandes LaTeX ne sont pas gérées. Je me souviens donc d'avoir dû revenir en arrière et couper-coller certaines étiquettes LaTeX à partir d'un fichier PDF dans Adobe Illustrator.
Python + NumPy fonctionnera pour les importations de données, car l’
numpy.loadtxt
importation de données texte est simple. À ce stade, vous pouvez choisir entre matplotlib et Gnuplot (qui possède une interface Python via Gnuplot.py ; aucun développement actif sur l'interface depuis 2008, mais encore une fois, Gnuplot change-t-il encore beaucoup, même s'il continue à ajouter des versions? ). Le wrapper PyAsy de Matthew Emmmett pourrait également fonctionner, selon ce que vous souhaitez faire. Matplotlib a une excellente composition mathématique (comme l'a noté Barron), et les manipulations de données peuvent être effectuées à l'aide de NumPy, SciPy ou de tout autre paquet Python que vous souhaitez utiliser pour vos données.Le problème que j'ai eu avec gnuplot seul, c'est qu'il est vraiment conçu pour le traçage seulement. Je ne voyais pas comment manipuler des données dans le langage de script gnuplot. J'ai essentiellement manipulé toutes mes données à l'avance avant de les exporter en texte, car je ne savais pas comment le faire autrement. Vous pouvez utiliser gnuplot pour évaluer des formules et effectuer quelques manipulations, mais pour moi, Python a une syntaxe beaucoup plus naturelle et une utilité générale plus grande que gnuplot. Je ne veux pas avoir à apprendre une autre langue juste pour faire une chose à moins que ce soit une langue vraiment naturelle et facile à apprendre. (Ou à moins que je ne sois obligé de le faire.)
Tecplot 360 a un problème similaire. Tecplot 360 produit des tracés étonnants, en particulier en 3D. Il y a des choses que vous pouvez faire avec Tecplot 360 en utilisant une interface graphique relativement facile à apprendre que vous auriez probablement du mal à faire dans un autre package de traçage. La dernière fois que j'ai utilisé Tecplot, c'était il y a 6 ou 7 ans. apparemment, ils ont ajouté beaucoup de fonctionnalités depuis. La manipulation des données peut être réalisée via l'indexation, le découpage en tranches ou la création de zones. Les quantités dérivées peuvent être calculées à l'aide d'équations. Vous pouvez également effectuer la transformation de Fourier de vos données, effectuer une interpolation (ou krigeage) et effectuer un certain nombre d'autres tâches. Ce n'est pas clair comment faire de la composition mathématique. Je suppose que vous pourriez pirater la sortie HTML de Tecplot et ajouter MathJax ou MathML? Les inconvénients, à mon avis, concernant Tecplot sont que ce n’est pas gratuit (ce qui signifie qu’en tant qu’outil, vous ne pourrez peut-être pas l'emporter d'un travail à l'autre), la dactylographie mathématique douteuse et le fait de pouvoir écrire des manipulations complexes de données nécessite l'apprentissage du langage macro de Tecplot. Le principal avantage est que sa capacité de traçage 3D surpasse matplotlib et MATLAB de loin. Il est possible de tracer par lots des données en utilisant le langage de macro / script de Tecplot et d'appeler des scripts Python externes (avec certaines fonctionnalités limitées). En outre, comme dans MATLAB, il existe une interface graphique sur laquelle vous pouvez compter si vous ne souhaitez pas apprendre à utiliser les scripts Tecplot. (L'interface graphique de Tecplot est beaucoup plus complète que celle de MATLAB.) Le principal avantage est que sa capacité de traçage 3D surpasse matplotlib et MATLAB de loin. Il est possible de tracer par lots des données en utilisant le langage de macro / script de Tecplot et d'appeler des scripts Python externes (avec certaines fonctionnalités limitées). En outre, comme dans MATLAB, il existe une interface graphique sur laquelle vous pouvez compter si vous ne souhaitez pas apprendre à utiliser les scripts Tecplot. (L'interface graphique de Tecplot est beaucoup plus complète que celle de MATLAB.) Le principal avantage est que sa capacité de traçage 3D surpasse matplotlib et MATLAB de loin. Il est possible de tracer par lots des données en utilisant le langage de macro / script de Tecplot et d'appeler des scripts Python externes (avec certaines fonctionnalités limitées). En outre, comme dans MATLAB, il existe une interface graphique sur laquelle vous pouvez compter si vous ne souhaitez pas apprendre à utiliser les scripts Tecplot. (L'interface graphique de Tecplot est beaucoup plus complète que celle de MATLAB.)
Les outils basés sur LaTeX tels que TikZ et PGFPlots ne semblent pas être conçus pour votre cas d'utilisation. Le point faible ici est la manipulation des données. TikZ et PGFPlots sont d'excellents outils LaTeX. J'aurais aimé savoir comment mieux les utiliser. S'agissant de LaTeX, je suppose que le flux de travail consiste à copier-coller les données nécessaires dans LaTeX et à les représenter. Il est possible d'exécuter des programmes à l'intérieur de LaTeX, mais je ne vois pas en quoi cette fonctionnalité vous aiderait nécessairement, étant donné que, pour une présentation ou un document, le cas d'utilisation que vous décrivez suggère que vous allez probablement garder le produit fini. Peut-être que vous êtes d'accord avec ce flux de travail; les deux outils ont la réputation d'être bien conçus et de produire des chiffres de haute qualité.
Enfin, Adobe Illustrator est un bon outil de retouche de parcelles, comme vous l'avez dit. les insuffisances sont également, comme vous l'avez dit, le manque de scriptabilité ou de répétabilité, mais rien ne vaut un programme d'édition graphique si vous voulez apporter de petites modifications.
la source
Je pense que cette question est excellente et qu’elle est au centre de mes préoccupations à l’heure actuelle. Matlab semble acceptable dans la plupart des revues mathématiques, mais il ne correspond tout simplement pas à l’IMHO aux superbes graphiques et diagrammes qui apparaissent dans des revues comme PNAS, Nature, PLoS ONE, etc.
Après avoir discuté précisément de cette question au sein de mon groupe de recherche pendant plusieurs semaines, nous n’avons toujours pas abouti à une conclusion quant au meilleur forfait. Nous avons constaté que la plupart des comparaisons de logiciels graphiques dans la documentation, les blogs ou d’autres sources Web sont en grande partie inutiles pour déterminer le meilleur package pour un objectif donné.
Je pense que ce qui aiderait vraiment l'utilisateur moyen qui n'est pas un expert dans tous / beaucoup de ces paquets, c'est d'avoir un petit ensemble d'exemples très bien définis qui pourraient être utilisés comme une "référence graphique" (en quelque sorte) sens comme repères CFD ). Pour autant que je sache, rien de tel n'existe actuellement.
Au minimum, j'aimerais voir:
Les données seraient fournies pour les numéros 1 à 3, et une photo ou un diagramme "original" pour le numéro 4. Pour chaque exemple, le code (entrée) et les images (sortie) seraient postés. Cela permettrait au lecteur de déterminer plus facilement quel package lui convient, à la fois en termes de qualité d'image et de complexité du code.
Mon plan est de faire quelque chose comme ça dans mon groupe au cours des mois à venir pour # 1, 2, 4 et un petit nombre de paquets, y compris Matlab, pgf / TikZ, python / scipy. S'il y a un intérêt, je pourrais poster ceci publiquement.
Ainsi , alors que ce n'est pas une réponse à la question qui provient encore (et je présente mes excuses pour cela) il pourrait être une réponse dans un délai de plusieurs mois.
la source
la source
Asymptote est un autre logiciel à considérer . Asymptote est en fait un langage de programmation (avec une syntaxe semblable à C ++) qui produit une sortie vectorielle. Une fonctionnalité intéressante est que le texte est rendu avec LaTeX (y compris les équations mathématiques), de sorte que le texte de vos figures est cohérent avec votre document.
J'ai écrit un wrapper Python à Asymptote appelé PyAsy pour pouvoir passer les tableaux NumPy au moteur Asymptote et effectuer quelques opérations de base de traçage. C'est assez approximatif et pas complet, mais ça pourrait être utile.
Quoi qu'il en soit, la qualité de sortie de Asymptote est vraiment agréable.
Edit: suite à ce qui précède, j'ai trouvé Fabric très utile pour lancer des travaux distants, synchroniser des répertoires et créer des fichiers binaires, récupérer des données d'exécution et / ou lancer des scripts d'analyse à distance. C'est une bibliothèque Python assez légère qui facilite un peu l'exécution des commandes distantes (et qui peut être scriptée).
la source
Laissez-moi vous donner un bref aperçu de la fonctionnalité graphique de Mathematica, car c’est ce que je connais bien.
Qu'est-ce que ça peut faire?
Pour voir des exemples, consultez la galerie de codes Mathematica sur le site Wolfram. Il ne s'agit pas spécifiquement de visualisation, mais presque tous les exemples incluent une certaine représentation graphique.
Vous pouvez également parcourir les tags de tracé (de base) et de graphismes (plus avancés) de Mathematica.SE.
Il est possible de créer votre image d'exemple de manière entièrement automatisée (aucun post-traitement manuel n'est nécessaire).
Forces
Tous les graphiques sont spécifiés de manière déclarative (comme SVG --- vous ne demandez pas au système de dessiner quelque chose, vous ne faites que lister les objets graphiques vectoriels). Les graphiques représentent le même type d'expressions Mathematica que tout autre élément du système. Ils sont simplement affichés de manière particulière. Cela signifie que les graphiques peuvent facilement être transformés et traités après leur création - ceci s'applique également aux graphiques créés avec des fonctions de traçage.
La manière simple et rapide de créer des graphiques consiste à utiliser des fonctions de traçage de haut niveau et à définir de nombreuses options pour personnaliser leur sortie. S'il n'y a pas de fonction pour le tracé précis dont vous avez besoin, vous pouvez assembler les graphiques à partir de primitives graphiques (ce qui est également très facile ).
La fonctionnalité de traçage de fonction mathématique est excellente. pour autant que je sache, c'est la classe dirigeante. Les échantillons Mathematica fonctionnent de manière adaptative (en 2D et en 3D), ce qui permet de générer rapidement et automatiquement un tracé lisse. Les singularités, les discontinuités, etc. sont détectées symboliquement par les fonctions de traçage.
Vous pouvez produire des figures pour une taille d'impression spécifique et vous assurer qu'elles correspondent bien au texte environnant d'une publication (par exemple, la taille de la police et les styles correspondent). En 2D, il existe deux types de coordonnées: les coordonnées de tracé qui correspondent à vos données et les coordonnées absolues spécifiées dans les points de l'imprimante. Le premier est redimensionné lors du redimensionnement du graphique, le dernier ne l'est pas. Le texte utilise les coordonnées absolues par défaut, ce qui signifie que le type à 8 points sera de 8 points, que le même chiffre soit exporté au format 7 cm ou 14 cm. Cela permet d’avoir des tailles de police cohérentes avec le texte de la publication.
Composition intégrée pour les formules mathématiques. Le package tiers MaTeX fournit une intégration LaTeX pour une composition de formule d'excellente qualité. (Divulgation: je suis l'auteur.)
Vous pouvez effectuer tous les traitements de données dans le même système. En règle générale, moyennant un peu de travail, le processus de création de chiffres complet peut être automatisé (même certains aspects avancés ), évitant ainsi le post-traitement manuel dans des logiciels tels qu'Adobe Illustrator. Ceci est important lorsque, à la dernière minute, vous découvrez un problème mineur et devez re-générer le chiffre.
Faiblesses
Il peut être difficile d’ avoir des chiffres avec plusieurs sous - parcelles et d’ avoir un alignement précis entre les systèmes de coordonnées des sous-parcelles.
Le package SciDraw (tiers) résout ce problème et permet un contrôle détaillé de chaque aspect de la figure. Le compromis de ce paquet est qu'il faut plus d'effort pour établir des chiffres.
Les graphiques 3D n'exportent pas bien vers les formats vectoriels. Exporter une version bitmap est cependant correct.
Si votre institution ne dispose pas déjà d'une licence, cela coûte de l'argent.
la source
Si vous connaissez déjà TikZ, vous pourriez être intéressé par R et le tikzDevice ; voici un exemple: tikzDevice - Sortie TikZ de R , voici un autre exemple: diagrammes TikZ avec R: tikzDevice .
la source
Creusez plus loin dans les parcelles PGF:
1) peut faire des diagrammes en 3D: python-matplotlib ne peut pas les faire, gnuplot est moche en comparaison
2) a des polices de taille et de famille cohérentes avec le document de base)
3) peut être basé sur des modèles pour des couleurs spécifiques
Il n'y a rien d'autre comme ça sur le marché. :)
la source
Je trouve que Tecplot est assez puissant pour la visualisation et la manipulation de données.
la source
Je vais essayer de vous donner mon point de vue sur mon expérience limitée, qui ne couvre que quelques types de tracés: tracés de données 2D, diagrammes de dispersion et diagrammes à base de graphes (arbres et graphiques, organigrammes); mais permettez-moi d'abord de s'écarter un peu de la question:
Premièrement, je voudrais dire que l’importance de produire des parcelles de haute qualité est souvent négligée. Les graphiques ne servent pas uniquement à afficher des données mais, s'ils sont utilisés efficacement, ils peuvent communiquer des idées complexes qui, souvent, ne peuvent pas être exprimées clairement dans un texte. Il me semble que ce n’est pas l’endroit approprié pour discuter de ce qui constitue, des avantages et des inconvénients d’un bon complot, mais si vous êtes intéressé, regardez ici .
Deuxièmement, j'ai plus souvent regretté d'utiliser une parcelle à moitié cuite que de passer du temps sur une parcelle de grande qualité. La raison en est qu’un mauvais tracé peut vous mentir , par exemple, si vous utilisez un tracé à moitié cuit pour examiner rapidement des données que vous n’avez peut-être pas correctement normalisées, ou si vous utilisez des tracés pas si bons pour effectuer des comparaisons visuelles. (l'œil peut souvent être très tolérant ou très trompeur). Je recommanderais donc toujours de préparer les parcelles comme si elles allaient être montrées à une personne qui n'est pas familière avec les résultats. Cela peut vous faire gagner du temps et améliorer votre travail. En outre, vous avez l’avantage supplémentaire que le matériel de présentation sera prêt pour la prochaine présentation / séminaire / communication.
Maintenant, pour répondre à la question ,
D'après mon expérience, il est toujours préférable de séparer le traitement des données de l'outil de traçage actuel et des outils de manipulation d'images. Pour le traitement des données, j'utilise python car il est très flexible et je n'ai pas trouvé de format de fichier difficile à gérer via python. De plus, les bibliothèques numpy et scipy peuvent être de puissants outils de manipulation de données numériques.
Au sein de python, je n'ai pas vu d'outil de traçage permettant de contrôler tous les détails de la mise en forme. J'ai constaté que ce sont les détails qui font toute la différence lorsque vous essayez d'intégrer des images lors du formatage d'un papier en latex. Par exemple, le contrôle des espaces blancs et des proportions de parcelles autour peut être un casse-tête avec matplotlib (pas impossible mais ne vaut pas mon temps), ce qui est très important si vous avez un espace limité comme c'est souvent le cas dans les journaux et les conférences. papiers.
D'après mon expérience, j'ai trouvé que GNUPLOT est le meilleur outil pour formater et produire des tracés 2D et des diagrammes de dispersion. Cela vous donne beaucoup de contrôle sur tous les détails de votre parcelle. Et vous pouvez produire des tracés de haute qualité (images vectorielles) en noir et blanc ou en couleurs. Le haut niveau de contrôle rend GNUPLOT un peu plus difficile à apprendre, et parfois des choses simples peuvent prendre un peu de travail, mais si vous prenez un exemple, cela peut simplifier les choses. Je regarde habituellement ces deux sites pour trouver l'inspiration, voir le site pas-so-FAQ ou les démonstrations officielles ici .
Parfois, les parcelles produites par GNUPLOT peuvent être assez grandes (dans la plage de Mo) et le journal peut rejeter les fichiers (cela m'est arrivé avec des nuages de points très colorés). J'ai utilisé et je recommande Imagemagick , un outil de ligne de commande permettant de convertir, éditer et compresser les images (je l'ai utilisé pour générer et éditer des fichiers JPEG de haute qualité tout en réduisant considérablement la taille du fichier). J'ai essayé d'autres outils utilisant la compression automatique des données, ce qui s'est révélé particulièrement problématique en raison du délicat équilibre entre les artefacts d'image et la compression.
J'ai également produit une bonne part de diagrammes (souvent pour des présentations). J'ai constaté que si je n'utilisais un diagramme qu'une seule fois (pas un document), l'application Keynote (OSX) et l'enregistrement au format PDF suffisent. Cependant, quand une image est utilisée plusieurs fois, la qualité de la présentation est plus importante et TikZ est mon outil préféré. Je trouve que TikZ est un peu difficile à utiliser, mais si vous prenez un exemple, c’est beaucoup plus facile.
Enfin, je fais la plupart de mon travail en ligne de commande afin d’intégrer différents outils que j’utilise avec bash ou python.
la source
Mon vote rapide est pour QtiPlot.
Bien que ce ne soit pas parfait, il offre la meilleure combinaison de facilité d’interface graphique, ainsi que de script Python, de sorte que vous fassiez vraiment "Qtiplot / Python / (Illustrator ou Inkscape)". Qtiplot est extensible, vous pouvez donc créer vos propres scripts / macros qui peuvent exécuter des commandes python pour ouvrir et traiter des données, puis les vider dans une table. Vous pouvez ensuite les tracer manuellement ou automatiquement. Il est également possible de le configurer pour qu’il fonctionne avec une composition LaTeX avec une composition disponible sur Internet ou avec une composition locale, afin que vous puissiez insérer des formules mathématiques dans vos titres / axes / balises de parcelle.
Les parcelles peuvent ensuite être exportées dans le format de votre choix, mais le format qui fonctionne le mieux est sans aucun doute le format SVG. Les fichiers SVG peuvent être modifiés dans inkscape si vous le souhaitez, ce qui offre également des capacités de composition LaTeX.
Bien que MatPlotLib soit génial, son plus gros inconvénient est de tout coder à la main (comme toute solution de traçage de script). QtiPlot est formidable, car vous pouvez écrire / automatiser le traitement et le traçage des données avec de superbes fonctionnalités Python, puis passer à un gabarit grossier pour vous permettre de le modifier manuellement et de faire toutes sortes d’interventions de coupe / collage / manipulation. c'est beaucoup plus rapide au cas par cas pour l'analyse des données. Vous pouvez également définir des dimensions précisément avec le script et manipuler les dimensions avec l'interface graphique, ce que vous ne pouvez pas faire avec matplotlib.
Je suppose que cela dépend de ce que vous pensez des solutions de représentation graphique de QtiPlot. Je l’ai trouvé très capable, mais la courbe d’apprentissage est assez raide.
la source
Je suis surpris que personne n'ait encore mentionné les excellents outils matlab2tikz et matplotlib2tikz de Nico Schlömer . Si vous utilisez LaTeX pour la préparation de documents et Matlab ou Python pour le traitement de données, vous pouvez facilement obtenir des tracés vectoriels de haute qualité que vous pouvez poster au contenu de votre coeur:
matlab2tikz('figure.tex')
(oumatplotlib2tikz
).figure.tex
selon vos goûts (remplacez le texte de l'étiquette par les maths appropriés, modifiez les couleurs, la largeur de ligne, le placement de la légende, le style de l'axe, etc.), voir le manuel de pgfplots (ou les nombreuses questions sur les pgfplots sur l'échange de pile TeX).includegraphics
, mettez\input{figure.tex}
(et n'oubliez pas d'inclure\usepackage{pgfplots}
dans le préambule).\input{figure.tex}
par\includegraphics{figure.pdf}
.la source
Si vous ne recherchez pas de script, jetez un œil à MagicPlot. Il n’est pas aussi riche en fonctionnalités que Origin (par exemple, ne peut produire que des tracés 2D), mais je n’ai jamais eu de problèmes de largeur de trait ni d’autres propriétés. Les graphiques sont bien anti-aliasés bien que le redessinage soit assez rapide. Plus ajustement utile.
la source
Tecplot 360 convient au traitement de données volumineuses et à la production de graphiques de qualité. Il dispose de puissantes interfaces d’ajout et de script pour traiter les données. Il me semble qu’il fait tout ce dont vous avez besoin pour le post-traitement.
Une erreur courante consiste à recourir à Excel. Non, il ne se souvient pas de la mise en page, de la plage X, de la carte de couleur. Ça n'anime pas. Il utilise des feuilles de calcul volumineuses et volumineuses pour travailler avec les données.
Bien entendu, vous ne trouverez pas d'outil permettant à la fois le post-traitement et l'édition de texte. Le choix d'un éditeur de texte adapté à vos publications est une autre question importante. N'utilisez pas MS Word, son gestionnaire de citations est moche. J'utilise LyX ou tout autre outil Latex disponible pour le système d'exploitation que j'utilise.
Oh, et lorsque vous devez publier un fichier PDF, incluez un lien vers LaTeX, Word ou tout autre format avec des mathématiques lisibles. En PDF, ce n'est pas.
la source