ग्राफ से डेटा को परिमार्जन करने के लिए आवश्यक सॉफ्टवेयर [बंद]


56

किसी को भी सॉफ़्टवेयर के साथ कोई भी अनुभव है (अधिमानतः मुक्त, अधिमानतः खुला स्रोत) जो कार्टेशियन निर्देशांक (एक मानक, रोजमर्रा की साजिश) पर प्लॉट किए गए डेटा की एक छवि लेगा और ग्राफ़ पर प्लॉट किए गए बिंदुओं के निर्देशांक को निकाल देगा?

अनिवार्य रूप से, यह डेटा-माइनिंग समस्या और रिवर्स डेटा-विज़ुअलाइज़ेशन समस्या है।


2
एक समाधान के लिए, इस उत्तर के लिए टिप्पणियों को देखें । ओपन सोर्स सॉल्यूशंस में इमेज प्रोसेसिंग या रैस्टर जीआईएस सॉफ्टवेयर ( GRASS एक संभावित उम्मीदवार है) या, शायद, GNU ऑक्टेव शामिल होगा । मैं इनका उल्लेख एक टिप्पणी के रूप में कर रहा हूं क्योंकि मैंने या तो इस विशिष्ट उद्देश्य के लिए उपयोग नहीं किया है, इसलिए कृपया इन्हें संभावनाओं के रूप में लें, निश्चित समाधानों के रूप में नहीं।
whuber

मैं कोड / सॉफ्टवेयर के लिए विशेष रूप से रेखांकन रेखांकन के लिए उम्मीद कर रहा हूँ, और मुझे याद है कि ऐसे पैकेज मौजूद थे, कम से कम उन्होंने 10 साल पहले किया था, लेकिन मैं अब उनके नाम याद नहीं कर सकता, और नहीं जानता कि क्या वे वर्तमान ऑपरेटिंग सिस्टम पर काम करते हैं ।
एलेक्स होलकोम्बे


यहां स्कैन से डेटा प्राप्त करने के लिए एक छोटा गणित कार्यक्रम ।
सोजेरड सी। डी। विर्स

1
इस भूखंड में वाई और एक्स के बीच संबंध क्या है, इसके उत्तर में अपने द्वारा इंगित संसाधन को भी देखें
एलेक्सिस

जवाबों:



42

ग्राफ अंकीयकरण सॉफ्टवेयर

कई अलग-अलग विकल्प हैं, लेकिन सभी मूल रूप से एक ही वर्कफ़्लो का उपयोग करते हैं:

  1. एक छवि अपलोड करें
  2. प्रत्येक अक्ष पर दो बिंदुओं पर मानों को इंगित करके x और y स्केल सेट करें
  3. इंगित करें कि क्या पैमाना रेखीय है, लॉग, आदि,
  4. बिंदुओं पर क्लिक करें।
    • कुछ प्रोग्राम स्वचालित रूप से लाइनों या बिंदुओं को पहचानते हैं। मैं आमतौर पर अंकों के बाद हूं, और मैं उन्हें 100 अंकों के साथ भी सहायक होने के लिए असंगत मानता हूं। मुझे ऐसा कोई नहीं मिला है जो विभिन्न प्रतीकों को पहचानता हो। यह सुविधा लाइनों को डिजिटाइज़ करने के लिए परेशानी का कारण हो सकती है, लेकिन मुझे ऐसा कभी नहीं करना पड़ा।

प्रोग्राम प्रत्येक बिंदु को xy मैट्रिक्स के रूप में देता है।

अक्सर यह उन बिंदुओं को चुनने में मदद करता है यदि छवि को ज़ूम किया जाता है, या तो छवि के ज़ूम किए गए संस्करण को अपलोड करके या कुछ कार्यक्रमों में उपलब्ध ज़ूमिंग सुविधा का उपयोग करके।

कई कार्यक्रम हैं, और वे अतिरिक्त सुविधाओं, प्रयोज्य, लाइसेंसिंग और लागत में भिन्न हैं। मैंने उन्हें नीचे सूचीबद्ध किया है।

मेरे द्वारा उपयोग किए गए सभी काम ठीक हैं। संदर्भों को छोड़कर जहां माप त्रुटि बहुत छोटी है, ग्राफ स्क्रैपिंग से त्रुटि नगण्य है (उदाहरण के लिए डिजिटलीकरण से त्रुटि << त्रुटि सलाखों का आकार या अनुमान में अनिश्चितता)। यदि इनमें से किसी भी कार्यक्रम की सटीकता का परीक्षण नहीं किया गया है, लेकिन उपयोगकर्ताओं के बीच, कार्यक्रमों के बीच और पुन: प्रस्तुत सांख्यिकीय विश्लेषण के परिणामों के बीच तुलना करना दिलचस्प होगा।

मेरे द्वारा उपयोग किए जाने वाले कार्यक्रम:

  • डिजिटाइज़र (मुफ्त सॉफ्टवेयर, जीपीएल) ऑटो पॉइंट / लाइन मान्यता। उबंटू रिपॉजिटरी में उपलब्ध (संलग्नक-डिजिटाइज़र)
  • गेट डेटा (शेयरवेयर) में ज़ूम विंडो, ऑटो पॉइंट / लाइन रिकग्निशन है
  • डिजिटाइज़ इट (शेयर) ऑटो पॉइंट / लाइन मान्यता
  • ImageJ (ओपन डिजिट , आर डिजिटाइज़ के बाद सबसे अधिक एक्स्टेंसिबल)
  • R डिजिटाइज़ (मुक्त, खुला स्रोत), क्योंकि यह R में सभी चरणों को ध्यान में रखते हुए ग्राफ से डेटा प्राप्त करने की प्रक्रियाओं को एक विश्लेषण में सरल करता है। R- जर्नल में ट्यूटोरियल देखें
  • इसे ले लो! (फ्री डेमो, $ 69) एक्सेल प्लग-इन
  • WebPlotDigitzer (मुक्त, ऑनलाइन)। ब्राउज़र आधारित, छवियों से डेटा निकालता है। यहां समीक्षा की गई

जिन कार्यक्रमों का मैंने उपयोग नहीं किया है:

  • ग्राफक्लिक (मैक, $ 8)
  • g3data (खुला स्रोत - GNU GPL) में ज़ूम विंडो है, कोई ऑटो-मान्यता नहीं है। उबंटू भंडार में उपलब्ध है।
  • GRABIT OpenSource (BSD) प्लगइन जो एक मालिकाना प्लेटफ़ॉर्म, Matlab में चलता है

टी एल; डॉ: WebPlotDigitizer एक के रूप में उपलब्ध है वेब अनुप्रयोग के साथ ही एक क्रोम प्लगइन


g3data (खुला स्रोत - GNU GPL) में ज़ूम विंडो है, कोई ऑटो-मान्यता नहीं है। उबंटू भंडार में उपलब्ध है। मैं तुलना नहीं कर सकता, क्योंकि यह केवल एक ही है जिसकी मैंने कोशिश की है; लेकिन मुझे इसका इस्तेमाल करना बहुत आसान लगा।
Scortchi - मोनिका फिर से बहाल करें

CRAN से R डिजिटाइज़ को क्यों हटाया गया?
लेओ लेपोल्ड हर्ट्ज़ '

1
@ इनमें से अधिकांश पीडीएफ के साथ काम नहीं करते हैं, पीडीएफ फाइलों के साथ मैं आंकड़ा बड़ा करता हूं और फिर एक आंकड़ा कैप्चर करता हूं (जैसे मैक पर cmd-shift-4) एक आकृति को jpg या png के रूप में सहेजने के लिए।
डेविड लेबॉयर

1
@ मासी CRAN पर एक पैकेज बनाए रखने से बहुत सारे अतिरिक्त काम हो सकते हैं। पैकेज GitHub github.com/tpoisot/digitize
डेविड लेबॉयर

1
@ मासी का विशेष रूप से 'व्यवस्थित' से क्या मतलब है? क्या आप प्रश्न में आकृति (नों) से लिंक कर सकते हैं? जब आप कहते हैं कि 'प्रतिच्छेदन', तो क्या आपका मतलब है कि बिंदु अक्ष के भीतर समाहित है और इस प्रकार प्रकट नहीं होता है?
डेविड लेबॉयर

16

अन्य उत्तर देने वाले मानते हैं कि आप ग्राफ की रेखापुंज छवि से निपटते हैं। लेकिन आजकल ग्राफ के रूप में ग्राफ को प्रकाशित करने का अच्छा चलन है। इस मामले में आप पुनर्प्राप्त डेटा की बहुत अधिक सटीकता प्राप्त कर सकते हैं और यहां तक ​​कि पुनर्प्राप्ति त्रुटि का अनुमान लगा सकते हैं यदि आप सीधे वेक्टर ग्राफ के कोड के साथ काम करते हैं, बिना इसे रेखापुंज छवि में परिवर्तित किए बिना।

चूंकि कागजात पीडीएफ फाइलों के रूप में ऑनलाइन प्रकाशित होते हैं, इसलिए मैं मानता हूं कि आपके पास एक पीडीएफ फाइल है जिसमें डेटा के साथ वेक्टर प्लॉट होता है जिसे आप इससे पुनर्प्राप्त करना चाहते हैं (संख्यात्मक रूप में प्राप्त करें) और अनुमानित वसूली त्रुटि का अनुमान लगाएं।

सबसे पहले, पीडीएफ एक सदिश प्रारूप है जो मूल रूप से पाठ्य (पाठ संपादक द्वारा पढ़ा जा सकता है) है। समस्या यह है कि यह (और लगभग हमेशा) संपीड़ित डेटा स्ट्रीम हो सकते हैं जो उन्हें एक पाठ संपादक द्वारा पढ़ने के लिए असम्पीडित होने की आवश्यकता होती है। इन संपीड़ित डेटा धाराओं में आमतौर पर हमारे द्वारा आवश्यक जानकारी शामिल होती है।

पठनीय पीडीएफ कोड के साथ पीडीएफ फाइल को टेक्स्ट डॉक्यूमेंट में बदलने के लिए डेटा स्ट्रीम को अनकम्प्रेस्ड करने के कई तरीके हैं। संभवतः सबसे आसान तरीका विकल्प के साथ मुफ्त QPDF उपयोगिता का उपयोग करना --stream-data=uncompressहै :

qpdf infile.pdf --stream-data=uncompress -- outfile.pdf

कुछ अन्य तरीके यहां और यहां वर्णित हैं

उत्पन्न आउटफिट।पीएलडी को टेक्स्ट एडिटर द्वारा खोला जा सकता है। अब आपको पीडीएफ संदर्भ नियमावली 1.7 की जरूरत है जो आपको दिखाई दे। इस पल में घबराओ मत! आपको 226 - 227 पृष्ठों पर "टेबल 4.9 पथ निर्माण ऑपरेटरों" में वर्णित केवल कुछ ऑपरेटरों को जानना होगा। सबसे महत्वपूर्ण ऑपरेटर हैं (पहले कॉलम में एक ऑपरेटर के लिए समन्वय विनिर्देश हैं, दूसरे में ऑपरेटर शामिल हैं और तीसरा ऑपरेटर नाम है ):

x y               m   moveto 

x y               l   lineto 

x y width height  re  rectangle

                  h   closepath

ज्यादातर मामलों में डेटा को पुनर्प्राप्त करने के लिए इन चार ऑपरेटरों को जानना पर्याप्त है।

अब आपको कुछ प्रोग्राम में टेक्स्ट के रूप में outfile.pdf फ़ाइल को आयात करने की आवश्यकता है जहां आप डेटा में हेरफेर कर सकते हैं। मैं दिखाऊंगा कि यह कैसे करना है गणितज्ञ के साथ ।

फ़ाइल आयात करना:

pdfCode = Import["outfile.pdf", "Text"];

अब मैं सबसे सरल मामले को मानता हूं: ग्राफ में एक पंक्ति होती है जिसमें कई दो-बिंदु खंड होते हैं। इस स्थिति में लाइन का प्रत्येक खंड इस तरह एन्कोडेड है:

268.79999 408.92975 m
272.39999 408.92975 l

पीडीएफ कोड से ऐसे सभी खंडों को निकालना:

lines = StringCases[pdfCode, 
   StartOfLine ~~ x1 : NumberString ~~ " " ~~ y1 : NumberString ~~ " m\n" ~~ 
                  x2 : NumberString ~~ " " ~~ y2 : NumberString ~~ " l\n" 
                                        :> ToExpression@{{x1, y1}, {x2, y2}}]; 

उन्हें कल्पना:

Graphics[{Line[lines]}]

आपको कुछ ऐसा मिलता है (मैं जिस पेपर के साथ काम कर रहा हूं उसमें चार रेखांकन हैं):

भूखंड

प्रत्येक दो आसन्न खंड एक बिंदु साझा करते हैं। तो इस मामले में आप आसन्न खंडों के अनुक्रमों को पथों में बदल सकते हैं:

paths = Split[lines, #1[[2]] == #2[[1]] &];

अब आप सभी रास्तों की अलग-अलग कल्पना कर सकते हैं:

Graphics[{Line /@ paths}]

इस आंकड़े से आप जिस रास्ते की तलाश कर रहे हैं (डबल क्लिक करके) ग्राफिक्स चयन की प्रतिलिपि बना सकते हैं और नए के रूप में पेस्ट कर सकते हैं Graphics। आप तत्वों को लेने वाले बिंदुओं की सूची में इसे पीछे की ओर परिवर्तित करने के लिए {1, 1, 1}। अब हमारे पास ग्राफ की समन्वय प्रणाली में नहीं बल्कि पीडीएफ फाइल के समन्वय प्रणाली में अंक हैं। हमें उनके बीच संबंध स्थापित करने की आवश्यकता है।

उपरोक्त प्लॉट से आप हाथ से टिक चुनें ( Shiftकई चयन के लिए पकड़े ), फिर उन्हें कॉपी करें और नए के रूप में पेस्ट करें Graphics। यहां बताया गया है कि आप क्षैतिज टिकों के निर्देशांक कैसे निकाल सकते हैं:

स्क्रीनशॉट

अब टिक्स के बीच अंतर की जाँच करें:

Differences[reHorTicks]

इन अंतरों से आप देख सकते हैं कि पीडीएफ फाइल में टिक्स की स्थिति कितनी सटीक है। यह मूल डेटापॉइंट्स को पीडीएफ फाइल में शामिल वेक्टर ग्राफ में परिवर्तित करके पेश की गई त्रुटि का अनुमान देता है। यदि टिक्स पोजिशनिंग में सराहनीय त्रुटियां हैं, तो आप टिक्स के निर्देशांक को रैखिक मॉडल में फिट करके त्रुटि को कम कर सकते हैं। इस रैखिक फ़ंक्शन का उपयोग अब पथ के बिंदुओं के मूल निर्देशांक प्राप्त करने के लिए किया जा सकता है (जो कि प्लॉट की समन्वय प्रणाली में है)।


2
एलेक्सी, आपने लिखा था लेकिन आजकल अच्छी प्रथा वेक्टर रूप में ग्राफ प्रकाशित करने के लिए है। क्या आपके पास सबसे अच्छा अभ्यास के लिए एक अच्छा संदर्भ है जिसके आसपास वेक्टर प्रारूप है? (यानी मुझे चाहिए कि मैं अपने LaTeX पांडुलिपियों में एक svg फ़ाइल के ईपीएस एनकैप्सुलेशन का उपयोग करता हूं, या क्या मैं सीधे LaTeX को ग्राफ का उत्पादन करने वाला हूं?) चीयर्स।
एलेक्सिस

1
@ ऐलेक्सिस मैं वेक्टर फॉर्म में ग्राफ प्रदान करने के लिए आधुनिक जर्नल की सिफारिशों का उल्लेख करता हूं। विभिन्न पत्रिकाएं वेक्टर प्रारूपों के विभिन्न सबसेट को स्वीकार करती हैं। सामान्य तौर पर मैं बेहतर गुणवत्ता की उम्मीद करता हूं जब एक प्रारूप से दूसरे प्रारूप में कम रूपांतरण होते हैं।
एलेक्सी पोपकोव

@ एलेक्सिस मूल रूप से मैं उम्मीद करता हूं कि पोस्टस्क्रिप्ट प्रारूपों (ईपीएस या पीडीएफ) में से किसी एक में ग्राफ प्रदान करना सबसे अच्छा विकल्प होना चाहिए। लेकिन सटीक उत्तर प्रकाशक द्वारा उपयोग किए गए सॉफ़्टवेयर पर निर्भर करता है। यह भी ध्यान दें कि आमतौर पर पत्रिकाएं आपके ग्राफिंग सॉफ़्टवेयर द्वारा निर्मित ग्राफ़ के किसी भी रूपांतरण के खिलाफ सलाह देती हैं। इसलिए यदि आप ईपीएस के रूप में निर्यात कर सकते हैं तो यह शायद सबसे अच्छा विकल्प है। यदि आप केवल एसवीजी निर्यात कर सकते हैं तो एसवीजी प्रदान करें यदि जर्नल इसे स्वीकार करता है, तो अपने आप को अन्य प्रारूप में परिवर्तित न करें।
एलेक्सी पोपकोव

Mathematica के लिए प्रक्रिया के विस्तृत विवरण के साथ दृढ़ता से संबंधित उत्तर
एलेक्सी पोपकोव






2

'g3data' एक सॉफ्टवेयर है जिसका उपयोग आपके उद्देश्य की पूर्ति के लिए किया जा सकता है। यह एक मुफ्त सॉफ्टवेयर है और मैंने इसका इस्तेमाल किया है। आप इसे यहाँ से डाउनलोड कर सकते हैं: http://www.frantz.fi/software/g3data.php


2

मुझे अपने करियर में ऐसा कई बार करना पड़ा, मैंने आखिरकार एक जावास्क्रिप्ट प्रोग्राम रखा जो यहाँ उपलब्ध है:

http://kdusling.github.io/projects/DataGrab/index.html

क्षमा करें, लेकिन फिर भी आपको हर एक बिंदु पर क्लिक करना होगा। हालांकि आप तीर कुंजियों का उपयोग कर सकते हैं जो कुछ कलाई के तनाव को बचाती है।



1

के लिए Rउपयोगकर्ताओं, पैकेज grImport(पर क्रैन ) वेक्टर ग्राफिक्स आयात और उन्हें वस्तुओं है कि आर व्याख्या कर सकते हैं में बदल सकते हैं। यह मानता है कि एक पोस्टस्क्रिप्ट प्रारूप में पीडीएफ (या ब्याज के अन्य वेक्टर प्रारूप) को परिवर्तित कर सकता है। यह उदाहरण के लिए Inkscape के साथ किया जा सकता है : आयात करें ( File > Import) आपका PDF पृष्ठ आपके आकृति के साथ Inkspace और में File > Save As > Save as type: > PostScript *.ps। एक बार जब आप अपनी *.psफ़ाइल को grImportविनीत आयात वेक्टर ग्राफिक्स के लिए छोड़ देते हैं , तो अधिक प्रासंगिक अनुभाग '4.1। छवियों से डेटा स्क्रैप करना '।

आपको अपने ऑपरेटिंग सिस्टम पर घोस्टस्क्रिप्ट की आवश्यकता होगी - इसे यहां से डाउनलोड करने का प्रयास करें

ध्यान दें, यदि आप कॉल करते समय किसी तरह भूत-प्रेत त्रुटि 'स्थिति 127' में भाग जाते हैं grImport::PostScriptTrace, तो यहां से अनुशंसा को हटा दें , जो कहता है कि मैन्युअल रूप से आपकी मशीन पर भूतस्क्रिप्ट के लिए पथ सेट करें।

पोस्टस्क्रिप्ट फ़ाइल को R में आयात करने के लिए यहाँ कुछ नमूना R कोड है:

install.packages("grImport")
require(grImport)
# if you get the ghostscript error 'status 127' then set the path to ghostscript, e.g.:
Sys.setenv(R_GSCMD = normalizePath("C:/Program Files/gs/gs9.22/bin/gswin64c.exe")) 
PostScriptTrace(file = "graph.ps", outfilename = "graph.ps.xml")
my_fig <- readPicture(rgmlFile = "graph.ps.xml")
grid.picture(my_fig)

ध्यान दें, यदि आपका ग्राफ एक बहु पृष्ठ पीडीएफ फाइल में एक पृष्ठ पर है, तो आप बहु-पृष्ठ दस्तावेज़ के साथ विभाजित कर सकते हैं PDFTK builder। Ikscape में अपने एक पृष्ठ की पीडीएफ फाइल को आयात करें और किसी भी अतिरिक्त तत्वों (अतिरिक्त पाठ, अतिरिक्त ग्राफ तत्वों) को हटा दें। जब आप रुचि रखने वाले ग्राफ़ तत्वों के निर्देशांक को पकड़ने की कोशिश कर रहे हों तो यह w आपके काम को R में कम कर देता है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.