सेट ऑफ़सेट के लिए gnuplot दस्तावेज़ बेहद संक्षिप्त है और मैं यह नहीं जान सकता कि ऑफ़सेट कैसे इंटरैक्ट करते हैं एकाधिक एक्स-अक्ष या वाई-अक्ष के साथ।

मेरे पास 2 प्लॉट हैं और वे x1y1 और x1y2 का उपयोग करते हैं, इसलिए दाईं ओर बाईं ओर 2 y-अक्ष हैं। अभी, जब मैं कुछ शीर्ष ऑफ़सेट जोड़ता हूं तो यह उस प्लॉट पर लागू होता है जो y1 का उपयोग करता है। मैं इसे y2 का उपयोग करने वाले प्लॉट को कैसे प्रभावित कर सकता हूं?

1
haelix 30 सितंबर 2020, 15:30

1 उत्तर

सबसे बढ़िया उत्तर

ग्नुप्लॉट help offsets यही कहता है:

ऑफसेट एक ऑटोस्केल्ड ग्राफ के अंदर डेटा के चारों ओर एक खाली सीमा लगाने के लिए एक तंत्र प्रदान करते हैं। ऑफ़सेट केवल x1 और y1 अक्षों को प्रभावित करते हैं, और केवल 2D प्लॉट कमांड में।

तो ऐसा लगता है, यह (सीधे) संभव नहीं है। वैसे, क्या आप चाहते हैं कि ऑफसेट प्रभावित हों...

  • केवल y2 अक्ष या
  • y1 और y2 कुल्हाड़ियों एक ही तरह से या
  • y1 और y2 कुल्हाड़ियों अलग-अलग?

हो सकता है कि आप अपना प्रश्न संपादित कर सकें और उदाहरण के लिए उदाहरण जोड़ सकें।

जोड़:

शायद निम्नलिखित मददगार है। जैसा कि आप पहले ही कर चुके हैं, आप GPVAL_ चरों का उपयोग कर सकते हैं। यह जानना महत्वपूर्ण है कि ये मान केवल प्लॉटिंग के बाद सेट किए गए हैं। तो, आपको प्लॉट करना होगा, फिर अपनी y1 और y2 श्रेणियों को इच्छानुसार संशोधित करना होगा और फिर replot। आप वेरिएबल्स GPVAL_Y_MIN, GPVAL_Y_MAX, GPVAL_Y2_MIN, और GPVAL_Y2_MAX का भी उपयोग कर सकते हैं, जो कि gnuplot का ऑटोस्केलिंग एल्गोरिथम श्रेणियों के रूप में सुझाता है।

कोड:

### different "offsets" for y1 and y2 axes
reset session

set xlabel "x1-axis"
set ylabel "y1-axis"
set ytics nomirror
set y2label "y2-axis"
set y2tics nomirror

plot 100*(sin(x)+1) axes x1y1 w l, \
     10*cos(x) axes x1y2 w l

Y1FromBottom = 0.40    # y1 data will use 40% space from bottom
Y2FromBottom = 0.80    # y2 data will use 80% space from bottom

set yrange[:(GPVAL_DATA_Y_MAX-GPVAL_DATA_Y_MIN)/Y1FromBottom+GPVAL_DATA_Y_MIN]
set y2range[:(GPVAL_DATA_Y2_MAX-GPVAL_DATA_Y2_MIN)/Y2FromBottom+GPVAL_DATA_Y2_MIN]

replot 
### end of code

परिणाम:

enter image description here

2
theozh 30 सितंबर 2020, 17:39