2013-03-02 6 views
9

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

ACB, 0.0000000, 0.0000000000 
ASW, 1.0919705, -0.0864042502 
CDX, 0.0000000, 0.0000000000 
CEU, -0.4369415, -0.5184317277 
CHB, -0.4686879, 0.7764323199 
CHD, 0.0000000, 0.0000000000 
CHS, -0.4141749, 0.7482543582 
CLM, -0.2559306, -0.2535837629 
FIN, -0.5004242, -0.2108050200 
GBR, -0.4140216, -0.5132990203 
GIH, 0.0000000, 0.0000000000 
IBS, -0.4928541, -0.5812216372 
JPT, -0.4821734, 0.7263450301 
KHV, 0.0000000, 0.0000000000 
LWK, 1.4515552, -0.0003996165 
MKK, 0.0000000, 0.0000000000 
MXL, -0.4019733, -0.0484315198 
PEL, 0.0000000, 0.0000000000 
PUR, -0.2165559, -0.3173440295 
TSI, -0.3956957, -0.4549254002 
YRI, 1.5555644, -0.0202297606 

मैं की तरह

plot 'infile' using 2:2 with labels, 'infile' using 1:2 

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

उत्तर

15

आप के साथ ऐसा कर सकते हैं निम्न आदेश:

set datafile sep ',' 
plot 'test.dat' u 2:3:1 w labels point offset character 0,character 1 tc rgb "blue" 

आपके भ्रम का हिस्सा शायद कई चीजों के लिए gnuplot का शॉर्टेंड नोटेशन है। उदाहरण के लिए, उपरोक्त आदेश में, uusing और w के लिए खड़ा है with और tctextcolor के लिए खड़ा है। आम तौर पर, gnuplot आपको वर्णों के सबसे छोटे अद्वितीय क्रम में कमांड को छोटा करने की अनुमति देता है जिसका उपयोग इसे पहचानने के लिए किया जा सकता है। इसलिए withw, wi, wit हो सकता है और gnuplot उनमें से किसी को पहचान लेगा क्योंकि कोई अन्य प्लॉट विनिर्देश w से शुरू नहीं होता है।

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

+0

बहुत बढ़िया, धन्यवाद! वास्तव में मुझे – syzygy

+0

की आवश्यकता है ध्यान दें कि, जाहिर है, "_the' लेबल 'शैली केवल तभी उपलब्ध होती है जब gnuplot कॉन्फ़िगरेशन विकल्प' --enable-datastrings'_ "के साथ बनाया गया हो; देखें http://superuser.com/a/67452/39752 – sdaau

+0

यह भी ध्यान दें - यदि आप तारों के साथ डेटासेट का उपयोग करते हैं, और '($ 1) का उपयोग करते हैं: ($ 2): ($ 3) लेबल के साथ विफल रहता है "_ चेतावनी: डेटा छोड़ना फ़ाइल के बिना "साजिश के बिना फ़ाइल" ($ 1) का उपयोग करने का प्रयास करें: ($ 2): stringcolumn (3) 'इसके बजाय (नोट,' स्ट्रिंगकॉल' का तर्क कॉलम नंबर है, _without_ एक डॉलर सिगिल)। – sdaau

4

आप एक csv फ़ाइल का उपयोग कर रहे जब से तुम विभाजक स्थापित करना चाहिए:

set datafile separator ',' 

इसके अलावा, मैं इस लगता है कि तुम क्या करने की कोशिश कर रहे हैं क्या है:

plot 'infile' using 2:3, 'infile' 2:3:1 with labels offset 1