2012-12-13 23 views
7

मैं 'gnuplot' का उपयोग कर रहा बिंदु के साथ एक पंक्ति लेखाचित्र तैयार करने:gnuplot: कैसे मेरी ग्राफ की चौड़ाई बढ़ाने के लिए

set style data linespoints 
set xlabel "number" 

set ylabel "Dollars" 
set yrange [0:250] 

कैसे मैं अपने ग्राफ की चौड़ाई को बढ़ा सकते हैं, ताकि मैं और अधिक है के रूप में 'एक्स', मैं अपने ग्राफ को एक वर्ग के बजाय आयताकार के अधिक चाहता हूं?

और मैं अपने 'y- अक्ष' के अंतराल कैसे बढ़ा सकते हैं? अब, यह सिर्फ मेरे वाई अक्ष में हर 50 के लिए एक निशान आकर्षित करते हैं?

उत्तर

11

ऐसा लगता है कि आप गतिशील रूप से करने के लिए अपने उत्पादन चाहते हैं प्लॉट किए जा रहे डेटा में आकार में समायोजित करें। यहाँ एक स्क्रिप्ट है कि करता है कि:

#!/usr/bin/env gnuplot 

# don't make any output just yet 
set terminal unknown 

# plot the data file to get information on ranges 
plot 'data.dat' title 'My Moneys' 

# span of data in x and y 
xspan = GPVAL_DATA_X_MAX - GPVAL_DATA_X_MIN 
yspan = GPVAL_DATA_Y_MAX - GPVAL_DATA_Y_MIN 

# define the values in x and y you want to be one 'equivalent:' 
# that is, xequiv units in x and yequiv units in y will make a square plot 
xequiv = 100 
yequiv = 250 

# aspect ratio of plot 
ar = yspan/xspan * xequiv/yequiv 

# dimension of plot in x and y (pixels) 
# for constant height make ydim constant 
ydim = 200 
xdim = 200/ar 

# set the y tic interval 
set ytics 100 

# set the x and y ranges 
set xrange [GPVAL_DATA_X_MIN:GPVAL_DATA_X_MAX] 
set yrange [GPVAL_DATA_Y_MIN:GPVAL_DATA_Y_MAX] 

# set the labels 
set title 'Dollars in buckets' 
set xlabel 'number' 
set ylabel 'Dollars' 

set terminal png size xdim,ydim 
set output 'test.png' 
set size ratio ar 

set style data linespoints 

replot 

इन उदाहरण डेटा के लिए:

0 50 
50 150 
100 400 
150 500 
200 300 

मैं निम्नलिखित साजिश:

enter image description here

यह एकदम सही ढंग से, वर्ग के बारे में है हो (मैंने x में 100 इकाइयों को वाई में 250 इकाइयों के बराबर परिभाषित किया है, और डेटा सीमा [[0,200), (50,500)]) है। अगर मैं एक और डेटा बिंदु (400,300) जोड़ने के लिए, आउटपुट फ़ाइल के रूप में उम्मीद व्यापक है,:

enter image description here

अपने अन्य सवाल का जवाब करने के लिए, आप y टिक वेतन वृद्धि इस प्रकार सेट कर सकते हैं:

set ytics <INCREMENT> 

उपरोक्त लिपि एक उदाहरण देता है।

+0

साइड नोट: टर्मिनल कमांड में आकार को परिभाषित करना ('टर्मिनल पीएनजी आकार सेट करें ... ') वास्तविक आउटपुट फ़ाइल के आकार को परिभाषित करता है, और' सेट आकार अनुपात 'आदेश आउटपुट के क्षेत्र के पहलू अनुपात को सेट करता है जहां साजिश प्लॉट किया गया है। मैंने यह सुनिश्चित करने के लिए दोनों किया कि पहलू अनुपात सुसंगत रहेगा। – andyras

0

सेट xrange [:]

सेट yrange [:]

अपने ग्राफ के 'आकार' को परिभाषित करने के लिए उन 2 आदेशों का उपयोग करें;)

+0

नहीं। मैं ग्राफ के 'आयाम' को बदलना चाहता हूं। यह हमेशा मुझे 'वर्ग' देता है। मैं चाहता हूं कि x अक्ष y अक्ष से अधिक हो। – michael

3

यहाँ चर्चा करने के लिए जोड़ने के लिए, वहाँ भी है set size ratio ... ताकि आप अपनी साजिश के पहलू अनुपात निर्धारित कर सकते हैं।

ratiognuplot का कारण बनता है (x- अक्ष लंबाई को y- अक्ष लंबाई के अनुपात) के एक पहलू अनुपात हिस्से के भीतर के साथ रेखाचित्र बनाने के लिए प्रयास करने के लिए:

यहाँ help set size से एक अंश है की साजिश <xscale> और <yscale> द्वारा निर्दिष्ट।

के लिए नकारात्मक मान का अर्थ अलग है। = -1, gnuplot ताकि इकाई (उदाहरण के लिए, भौगोलिक डेटा के लिए उपयुक्त) दोनों एक्स और y अक्ष पर लम्बाई समान होती है तराजू स्थापित करने के लिए प्रयास करता है। यदि = -2, वाई पर इकाई x पर इकाई की लंबाई से दोगुना है, और इसी तरह।

इसके लिए वास्तव में काम करने के लिए, तो आप शायद कुछ उचित आकार के लिए उत्पादन चालक सेट करना होगा:

set term png size 800,400 #800 pixels by 400 pixels 

या:

set term post size 8,4 #8 inches by 4 inches 

यह सब टर्मिनल निर्भर है, इसलिए यह देखने के लिए टर्मिनल की मदद देखने के लायक है कि यह कौन सी इकाइयों का उपयोग करता है, आदि