2012-06-29 17 views
9

मैं gnuplot के ऑटोस्कलिंग को कैसे सीमित कर सकता हूं, ताकि वाई-मैक्स के लिए उदाहरण के रूप में, यह कम से कम एक निश्चित मान है और यह निश्चित "सीमा" तक स्वत: संसाधित हो जाएगा?ऑटोस्केलिंग के लिए न्यूनतम और अधिकतम सीमाएं

प्रलेखन को देखने से, मैं केवल मिनी-या अधिकतम अक्ष को ठीक करने का तरीका देखता हूं, जबकि दूसरा स्वचालित रूप से स्केल किया जा रहा है।

About autoscaling on PDF page 93

+0

क्या आप ऑटोस्केलिंग से क्या मतलब समझ सकते हैं? क्या आप ymax को एक निश्चित मान पर सेट करना चाहते हैं, या आप डेटा को स्केल करना चाहते हैं ताकि अधिकतम अधिकतम मूल्य हो? – andyras

+0

@andyras ymax के लिए उदाहरण: न्यूनतम (ymax का) 100 हो सकता है, और अधिकतम 1000. यदि उच्चतम डेटा बिंदु 50 है, तो ymax 100 होगा। यह स्वचालित रूप से 1000 तक मानों के लिए स्केल होगा। उसके बाद मान काटा जाएगा। – varesa

उत्तर

18

संस्करण 4.6 के बाद से gnuplot ऑटोस्केलिंग के लिए ऊपरी और निचली सीमा निर्दिष्ट करने के लिए एक नया वाक्यविन्यास प्रदान करता है। आपके मामले के लिए आप

set xrange [0:100 < * < 1000] 

इस्तेमाल कर सकते हैं प्रलेखन से हवाला देते हुए:

रेंज जिसमें autoscaling प्रदर्शन किया जा रहा है एक लोअर बाउंड <lb> या एक ऊपरी बाध्य <ub> या दोनों के द्वारा सीमित किया जा सकता। वाक्य रचना

{ <lb> < } * { < <ub> } 

उदाहरण के लिए

0 < * < 200 

सेट <lb> = 0 और <ub> = 200 है।

वह वाक्यविन्यास set *range के न्यूनतम या अधिकतम मूल्य दोनों पर लागू किया जा सकता है।

xmin लपेटकर करने के लिए, लेकिन यह सकारात्मक रखते हुए,

set xrange [0<*:] 

का उपयोग x लपेटकर करने के लिए, लेकिन 10 से 50 की न्यूनतम सीमा का ध्यान रखें:

set xrange [*<10:50<*] 

अधिक जानकारी के लिए प्रलेखन के बारे में set xrange देखें।

4

मुझे नहीं लगता कि यह संभव है, या तो आप

set yrange [FIXED_MIN : FIXED_MAX] 
set yrange [  * : FIXED_MAX] 
set yrange [FIXED_MIN :   *] 
set yrange [  * :   ] 

क्रमशः, नहीं- min- या max-, या दोनों अक्ष यानी .: पर autoscaling है।

+0

तो ऐसा लगता है कि यह वास्तव में ऐसा था, बल्कि मैं इसे खोजने में सक्षम नहीं था। ऐसा लगता है कि मुझे डेटा – varesa

4

इस मामले में, आप डेटा फ़िल्टर कर सकते हैं और gnuplot यह सामान्य ऑटो स्केलिंग है करते हैं:

set yrange [*:*] 
plot 'mydatafile' u 1:(($2 >= YMIN && $2 <= YMAX) ? $2 : 1/0) 
+0

का उपयोग करके मैन्युअल रूप से स्केल करना है, जो मैंने किया है (लेकिन लेकिन gnuplot के बाहर)। क्षमा करें अगर मैं कोड गलत पढ़ता हूं, लेकिन यह वाईएमआईएन के नीचे हर मूल्य को छोड़ देता है? आप जो चाहते थे उसमें थोड़ा गलत व्याख्या हो सकती है (उदाहरण के लिए। यिन = 0, वाईमैक्स = 100-1000)। मैंने YMIN पर पृष्ठभूमि रंग (इसलिए यह अदृश्य है) के साथ डेटा का एक बिंदु जोड़कर हल किया। इससे मुझे वह प्रभाव मिला जो मैं चाहता था। – varesa

+1

@varesa - यदि आप gnuplot 4.6 का उपयोग कर रहे हैं, तो 'आँकड़े' कमांड भी है जिसे आप उपरोक्त फ़िल्टर और gnuplot- परिभाषित चर जोड़ सकते हैं: 'GPVAL_YMIN' और' GPVAL_XMIN', लेकिन अब हम शुरू कर रहे हैं थोड़ा और जटिल हो जाओ। हालांकि "अदृश्य" बिंदु एक दिलचस्प विचार है - मुझे यह पसंद है। – mgilson

+0

@mgilson Gnuplot 4.6 ने ऑटोस्केलिंग में ऐसी ऊपरी और निचली सीमाओं के लिए भी एक नया वाक्यविन्यास जोड़ा, जैसे 'सेट xrange [0: 100 <* <1000] '। – Christoph

1

के बाद से लोगों को इस सवाल में रुचि होने लगते हैं, मैं जिस तरह से मैं के रूप में इस हल जोड़ देंगे एक उत्तर:

मैंने डेटा की शुरुआत में अदृश्य मार्कर डालने से ऑटोस्केलिंग के लिए न्यूनतम बनाया। यही साजिश हमेशा इसे "दिखाने" का कारण बनती है, भले ही इसे मधुमक्खी नहीं देखा जा सके।

तब मैं gnuplot के बाहर अधिकतम कार्यान्वित एक पार्सर स्क्रिप्ट है कि मैं gnuplot के लिए डेटा तैयार करने के लिए इस्तेमाल किया है में (propably रूप में अच्छी तरह इसके अंदर संभव हो सकता था, mgilson के जवाब पर एक नज़र डालें),।

असल में स्क्रिप्ट में मैंने सभी "क्लिप आउट" मान लिया, उन्हें y = 0 में जोड़ा, और उन्हें लाल बना दिया। इस तरह मुझे ग्राफ के लिए समझदार होने के लिए मूल्यों की एक "चेतावनी" मिलती है। (मेरा प्रोग्राम दो मेजबानों के बीच पिंग्स पर नज़र रखता है, और 5s + latencies => ग्राफ को ग्राफ़ करने की कोशिश करने का कोई अर्थ नहीं है।

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