2011-01-25 12 views
5

के साथ gnuplot विकल्प वर्तमान में मैं एक समय रेखा के खिलाफ डेटा प्लॉट करने के लिए gnuplot का उपयोग कर रहा हूँ। हालांकि समय रेखा की परिशुद्धता मिलीसेकंड में है लेकिन gnuplot केवल सेकंड को संभालने में सक्षम है।उच्च समय परिशुद्धता

मैंने कुछ विकल्पों को देखा है, लेकिन वास्तव में मुझे केवल कुछ ऐसे की जरूरत है जो एक दूसरे के अंशों का सामना कर सकें।

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

कोई सुझाव?

अद्यतन

मैं gnuplot के साथ इस का उपयोग कर रहा:

set xdata time 
set timefmt "%Y-%m-%d-%H:%M:%S" 

हालांकि वहाँ कोई% च मिलीसेकेंड प्राप्त करने के लिए है। उदाहरण के लिए, इस काम करता है:

2011-01-01-09:00:01 

लेकिन मैं की जरूरत है:

2011-01-01-09:00:01.123456 
+2

आप डेटा और आदेशों का उपयोग कर रहे आप प्लॉट करने के लिए कोशिश कर रहे हैं का एक टुकड़ा पोस्ट कर सकते हैं? gnuplot इकाइयों के बारे में बिल्कुल परवाह नहीं करना चाहिए - यह कैसे पता चलता है कि वे सेकंड या मिलीसेकंड हैं, आखिरकार? - इसलिए मुझे पूरा यकीन नहीं है कि यह क्या कर रहा है, या नहीं कर रहा है, यह वही नहीं है जो आप चाहते हैं। – DSM

+0

सबसे छोटा टाइमफैम एक सेकंड है क्योंकि एक मिनट में 60 सेकंड होते हैं और विशेष रूप से संभालने की आवश्यकता होती है। मिलीसेकंड के साथ मुझे समझ में नहीं आता कि समस्या क्या है? – Tom

+0

आह, अब मैं समस्या को समझता हूं, हाँ, यह वास्तव में एक समस्या है और मुझे नहीं लगता कि एक सुरुचिपूर्ण समाधान है। – Tom

उत्तर

10

आप

set format x '%.6f' 

या (शायद, मैं इसे करने की कोशिश नहीं की है, के रूप में मैं अब का उपयोग करना पसंद के साथ टिक प्रारूप निर्धारित कर सकते हैं Matplotlib और gnuplot मेरी मशीनों पर स्थापित) की जरूरत नहीं है:

set timefmt "%Y-%m-%d-%H:%M:%.6S" 

(%S प्रारूप स्ट्रिंग के साथ निर्दिष्ट अंक) की संख्या पर ध्यान दें।

उत्कृष्ट विवरण not so Frequently Asked Questions में अधिक जानकारी मिल सकती है।

+1

यह मेरे लिए काम नहीं कर रहा है। मैंने मूल पोस्ट से डेटा की प्रतिलिपि बनाई और अपना 'सेट टाइमफैम'% Y-% m-% d-% एच:% एम:% 6 एस' जारी किया। हालांकि यह प्रारूप स्वीकार किया गया है, जब मैं 'plot' कमांड चलाता हूं I सभी डेटा बिंदुओं पर 'चेतावनी: स्ट्रिंग में खराब समय प्रारूप' प्राप्त करें। –

+1

यदि मैं टाइमफैम से '.6' हटा देता हूं और फिर मेरे डेटा से दशमलव स्थान हटा देता हूं, तो यह काम करेगा। gnuplot वास्तव में ऐसा प्रतीत नहीं होता है गैर-पूर्णांक सेकंड को संभालने में सक्षम। –

+3

@thoughtadvances gnuplot 4.6 '% S' को 'डबल' के रूप में व्याख्या करेगा जिसका अर्थ है कि अंशकालिक सेकंड सही ढंग से व्याख्या किए जाते हैं। –

1

मैं एक ही उद्देश्यों के लिए gnuplot उपयोग कर रहा हूँ, मेरे इनपुट की तरह दिखता है:

35010.59199,100,101
35010,76560, 100,110
35011.05703,100,200
35011.08119,100,110
35011.08154,100,200
35011.08158,100,200
35011.08169,100,200
35011.10814,100,200
35011.16955,100,110
35011.16985,100,200
35011.17059,100,200

पहले कॉलम मध्यरात्रि के बाद और एक nanosecond हिस्सा अल्पविराम के बाद सेकंड है। आप एक csv फ़ाइल में और gnuplut में यह बचा सकता है:

set datafile separator ',' 
plot "test.csv" using 1:3 with lines 
1

मैंने मूल रूप से आपकी समस्या को गलत समझा। मुझे लगता है कि समय प्रारूप के लिए बेहतर संकल्प gnuplot के साथ एक बड़ी समस्या है और एक जो मेरे ज्ञान के लिए लागू नहीं किया गया है।

एक संभव काम के आसपास awk उपयोग करने के लिए की तरह

plot "<awk 'your_awk_one_liner' file1.dat" with lines 

और फिर कुछ के साथ सेकंड की संख्या में अपनी तिथि परिवर्तित करने के लिए बस डबल साजिश से एक नियमित रूप से डबल करते हैं और भूल जाते हैं कि यह हर बार था होगा बिल्कुल (मार्टिन के समाधान की तरह थोड़ा)। मुझे डर है कि मैं अजीब के साथ बहुत अच्छा नहीं हूं और इसलिए मैं इस बिट के साथ मदद नहीं कर सकता - हालांकि ये पृष्ठ मदद कर सकते हैं - http://www.gnu.org/manual/gawk/html_node/Time-Functions.html और http://www.computing.net/answers/unix/script-to-convert-datetime-to-seco/3795.html। gnuplot के साथ awk का उपयोग यहां वर्णित है: http://t16web.lanl.gov/Kawano/gnuplot/datafile3-e.html

फिर आप (और डेटा नहीं) सही समय के साथ एक दूसरे अक्ष साजिश सकता है - विधि यहां इस्तेमाल की तरह कुछ: Is there a way to plot change of day on an hourly timescale on the x axis?

मुझे डर है कि मैं कोशिश करते हैं और एक पूरा लिखने के लिए समय नहीं है कर रहा हूँ समाधान - लेकिन कुछ उचित होना चाहिए।

शुभकामनाएं - अगर आपको कुछ काम मिल रहा है तो हमें अपडेट रखें - मुझे रूचि होगी।

9

gnuplot 4.6 manual यह कहा गया, "के अंतर्गत समय/तारीख विनिर्देशक" (gnuplot 4.6 पीडीएफ के पेज 114) के अनुसार:

% S - पर दूसरा, उत्पादन पर पूर्णांक 0-60, (डबल) इनपुट

क्या इसका मतलब यह है कि जब टाइम स्टांप पढ़ने ऐसे 2013-09-16 09:56:59.412 के रूप में आंशिक भाग %S विनिर्देशक का हिस्सा के रूप में शामिल किया जाएगा। इस तरह की एक टाइमस्टैम्प सही ढंग से नियंत्रित किया जाएगा:

set timefmt "%Y-%m-%d %H:%M:%S" 
set datafile separator "," 
plot "timed_results.data" using 1:2 title 'Results' with lines 

और जैसे डेटा के साथ खिलाया:

2013-09-16 09:56:53.405,10.947 
2013-09-16 09:56:54.392,10.827 
2013-09-16 09:56:55.400,10.589 
2013-09-16 09:56:56.394,9.913 
2013-09-16 09:56:58.050,11.04 
+0

यह एक बहुत अच्छा जवाब है और सीधे सवाल को संबोधित करता है - कैसे मिलीसेकंड मान gnuplot द्वारा पहचाना गया ... + ve 1। – Xofo

+0

यह स्वीकार्य उत्तर होना चाहिए। मैं इस समाधान का सफलतापूर्वक उपयोग कर रहा हूं। – Xofo

+0

यह काम समय डेटा पढ़ने के लिए मिलता है, लेकिन इसे लिखने के लिए इतना अच्छा नहीं है।उदाहरण के लिए, 'प्रारूप प्रारूप x "% एच:% एम:% एस" ', एक ही मूल्य के साथ लेबल किए गए सभी एक्स tics में एक ही दूसरे परिणाम के भीतर डेटा के साथ संयुक्त। उदाहरण के लिए, "09:56:53", "09:56:53", "09:56:53" के बजाय "09: 56: 53.4", "09: 56: 53.5", "09:56: 53.6 "। – TrentP

संबंधित मुद्दे