Quelqu'un a-t-il une expérience avec un logiciel (de préférence gratuit, de préférence open source) qui prend une image de données tracées sur des coordonnées cartésiennes (un tracé standard quotidien) et extrait les coordonnées des points tracés sur le graphique?
Il s’agit essentiellement d’un problème d’exploration de données et d’un problème de visualisation inversée des données.
data-visualization
data-mining
software
Alex Holcombe
la source
la source
Réponses:
Consultez la digitalisation package pour R . Son conçu pour résoudre exactement ce genre de problème.
la source
logiciel de numérisation graphique
Il existe de nombreuses options différentes, mais toutes utilisent essentiellement le même flux de travail:
Le programme renvoie chaque point sous forme de matrice xy.
Il est souvent utile de sélectionner des points si l'image est zoomée, soit en téléchargeant une version zoomée de l'image, soit en utilisant la fonctionnalité de zoom disponible dans certains programmes.
Il existe de nombreux programmes et ils varient en fonctionnalités, en convivialité, en licences et en coûts. Je les ai énumérés ci-dessous.
Tous ceux que j'ai utilisés fonctionnent bien. Sauf dans des contextes où l'erreur de mesure est très petite, l'erreur de grattage de graphique est non significative (par exemple, erreur de numérisation << taille des barres d'erreur ou incertitude dans l'estimation). Si n’avons pas testé l’exactitude de l’un de ces programmes, il serait intéressant de comparer les utilisateurs, les programmes et les résultats d’analyses statistiques reproduites.
Programmes que j'ai utilisés:
Programmes que je n'ai pas utilisés:
TL; DR: WebPlotDigitizer est disponible en tant qu’application Web et plug-in chrome.
la source
D'autres répondeurs supposent que vous traitez une image matricielle d'un graphe. Mais de nos jours, la bonne pratique consiste à publier des graphiques sous forme vectorielle. Dans ce cas, vous pouvez obtenir une précision beaucoup plus élevée des données récupérées et même estimer l'erreur de récupération si vous utilisez directement le code du graphe vectoriel, sans le convertir en image raster.
Étant donné que les articles sont publiés en ligne sous forme de fichiers PDF, je suppose que vous avez un fichier PDF contenant un tracé vectoriel avec les données que vous souhaitez récupérer (obtenez-le sous forme numérique) et estimez l'erreur de récupération introduite.
Tout d'abord, le format PDF est un format vectoriel qui est essentiellement textuel (peut être lu par un éditeur de texte). Le problème est qu’il peut (et presque toujours) contenir des flux de données compressés qui doivent être décompressés pour pouvoir être lus par un éditeur de texte. Ces flux de données compressés contiennent généralement les informations dont nous avons besoin.
Il existe plusieurs façons de décompresser des flux de données afin de convertir un fichier PDF en un document textuel avec un code PDF lisible. Le moyen le plus simple consiste probablement à utiliser l’ utilitaire gratuit QPDF avec l’
--stream-data=uncompress
option suivante :Certains autres moyens sont décrits ici et ici .
Le fichier outfile.pdf généré peut être ouvert par un éditeur de texte. Vous avez maintenant besoin du Manuel de référence PDF 1.7 pour comprendre ce que vous voyez. Ne paniquez pas en ce moment! Vous devez connaître uniquement quelques opérateurs décrits dans le "TABLEAU 4.9 Opérateurs de construction de chemin" des pages 226 à 227. Les opérateurs les plus importants sont (la première colonne contient la spécification des coordonnées d'un opérateur, la deuxième contient l'opérateur et le troisième le nom de l'opérateur). ):
Dans la plupart des cas, il suffit de connaître ces quatre opérateurs pour récupérer les données.
Vous devez maintenant importer le fichier outfile.pdf en tant que texte dans un programme permettant de manipuler les données. Je vais montrer comment faire avec Mathematica .
Importer le fichier:
Supposons maintenant le cas le plus simple: le graphique contient une ligne composée de nombreux segments à deux points. Dans ce cas, chaque segment de la ligne est codé comme ceci:
Extraire tous ces segments du code PDF:
En les visualisant:
Vous obtenez quelque chose comme ceci (le document sur lequel je travaille contient quatre graphiques):
Chaque deux segments adjacents partagent un point. Donc, dans ce cas, vous pouvez transformer les séquences de segments adjacents en chemins:
Vous pouvez maintenant visualiser tous les chemins séparément:
À partir de cette figure, vous pouvez sélectionner (en double-cliquant) le chemin que vous recherchez, copier la sélection de graphiques et la coller en tant que nouvelle
Graphics
. Pour le convertir à l’arrière en liste de points, vous prenez l’élément{1, 1, 1}
. Nous avons maintenant les points non pas dans le système de coordonnées du graphique, mais dans le système de coordonnées du fichier PDF. Nous devons établir des relations entre eux.Dans le graphique ci-dessus, vous sélectionnez les ticks à la main (
Shift
en les sélectionnant plusieurs fois), puis les copiez et les collez en tant que nouveauxGraphics
. Voici comment vous pouvez extraire les coordonnées des ticks horizontaux:Maintenant, vérifiez les différences entre les ticks:
À partir de ces différences, vous pouvez voir à quel point le positionnement des graduations dans le fichier PDF est précis. Il donne une estimation de l'erreur introduite en convertissant les points de données d'origine en un graphe vectoriel inclus dans le fichier PDF. S'il y a des erreurs appréciables dans le positionnement des ticks, vous pouvez réduire l'erreur en ajustant les coordonnées des ticks à un modèle linéaire. Cette fonction linéaire peut maintenant être utilisée pour obtenir les coordonnées d'origine des points du chemin (c'est-à-dire dans le système de coordonnées du tracé).
la source
Je ne l'ai pas utilisé, mais le laboratoire UWA CogSci recommande DataThief (shareware).
la source
Découvrez engauge. Son source libre et ouverte http://digitizer.sourceforge.net/
la source
Un-Scan-It http://www.silkscientific.com/graph-digitizer.htm
la source
Essayez scanit: http://amsterchem.com/scanit.html
Il est gratuit, fonctionne sous Windows
la source
Vous pouvez également essayer im2graph ( http://www.im2graph.co.il ) pour convertir des graphiques en données. Fonctionne sous Linux et Windows.
la source
'g3data' est un logiciel qui peut être utilisé à vos fins. C'est un logiciel libre et je l'ai utilisé. Vous pouvez le télécharger ici: http://www.frantz.fi/software/g3data.php
la source
J'ai dû faire cela tellement de fois au cours de ma carrière que j'ai finalement créé un programme javascript disponible ici:
http://kdusling.github.io/projects/DataGrab/index.html
Désolé, mais vous devrez toujours cliquer sur chaque point. Bien que vous puissiez utiliser les touches fléchées, vous éviterez des tensions au poignet.
la source
STIPlotDigitizer vient d'être publié.
http://stiwww.com/product/software-techniques-plot-digitizer
la source
Pour les
R
utilisateurs, le packagegrImport
(sur CRAN ) peut importer des graphiques vectoriels et les convertir en objets pouvant être interprétés par R. Cela suppose que l’on puisse convertir les PDF (ou tout autre format vectoriel d’intérêt) au format PostScript. Cela peut être fait par exemple avec Inkscape : importez (File > Import
) votre page PDF avec votre figure dans Inkspace etFile > Save As > Save as type: > PostScript *.ps
. Une fois votre*.ps
fichier remplacé par lagrImport
vignette Importation de graphiques vectoriels , la section '4.1. Gratter les données des images '.Vous aurez besoin de ghostscript sur votre système d'exploitation - essayez de le télécharger à partir d' ici .
Notez que si vous rencontrez une erreur ghostscript 'status 127' lorsque vous appelez
grImport::PostScriptTrace
, alors suivez la recommandation qui suit , qui consiste à définir manuellement le chemin d'accès à ghostscript sur votre ordinateur.Voici un exemple de code R permettant d'importer un fichier PostScript dans R:
Notez que si votre graphique se trouve sur une page d'un fichier PDF de plusieurs pages, vous pouvez alors scinder le document de plusieurs pages avec
PDFTK builder
. Importez votre fichier PDF d'une page dans Ikscape et supprimez tous les éléments supplémentaires (texte supplémentaire, éléments graphiques supplémentaires). Cela facilitera votre travail dans R lorsque vous essaierez de saisir les coordonnées des éléments graphiques qui vous intéressent.la source