2012-01-31 18 views
9

में रंग आधारित मानों के साथ प्लॉटिंग पॉइंट्स मैं वर्गीकरण के परिणाम प्लॉट करना और सही कक्षाओं को चिह्नित करना चाहता हूं। तो, मूल रूप से मुझे एक स्ट्रिंग कॉलम में मान पर प्रत्येक बिंदु आधार के लिए रंग असाइन करना है।gnuplot: एक कॉलम

5,1 3,5 1,4 0,2 आइरिस-setosa मैं (यहाँ में जवाब देने के लिए धन्यवाद: How to make points one color when a third column equals zero, and another color otherwise, in Gnuplot?) निम्नलिखित समाधान स्क्रिप्ट के साथ समाप्त हो गया:

डाटासेट इस तरह दिखता है

set palette model RGB defined (0 "red",1 "blue", 2 "green") 
plot 'iris.data' using 1:2:5 notitle with points pt 2 palette 

मूल डेटासेट में मैंने स्ट्रिंग लेबल को संख्याओं के साथ बदल दिया, क्योंकि मुझे नहीं पता कि gnuplot में स्ट्रिंग के साथ कैसे काम करना है। स्ट्रिंग को रंगों को मैप करने का कोई तरीका है?

वर्तमान में उत्पादन इस तरह दिखता है: gnuplot coloring points

हालांकि मैं ढाल पैलेट पसंद नहीं है, क्योंकि यह इस मामले में कोई मतलब नहीं है। मैं एक एकल रंग और कक्षा के नाम के साथ सामान्य किंवदंती पसंद करूंगा। कोई विचार यह कैसे करना है?

+0

मैं एक ही सवाल है:

बस संपूर्णता के लिए

, gnuplot pm3d colors demo page पर पिछले उदाहरण पर एक नजर है। यह बहुत अच्छा होगा अगर gnuplot पैलेट केवल पूर्णांक की बजाय तार स्वीकार कर लिया। मुझे नहीं लगता कि यह करता है। –

उत्तर

5

awk का उपयोग करके आप यह कैसे कर सकते हैं।

एक डेटा फ़ाइल Data.csv का उपयोग करना:

5.4452 4.6816 blue 
1.2079 9.4082 red 
7.4732 6.5507 red 
2.3329 8.2996 red 
3.4535 2.1937 green 
1.7909 2.5173 green 
2.5383 7.9700 blue 

और इस स्क्रिप्ट:

enter image description here

है क्या awk बस तिहाई की जांच करें:

set pointsize 3 
plot "< awk '{if($3 == \"red\") print}' Data.csv" u 1:2 t "red" w p pt 2, \ 
    "< awk '{if($3 == \"green\") print}' Data.csv" u 1:2 t "green" w p pt 2, \ 
    "< awk '{if($3 == \"blue\") print}' Data.csv" u 1:2 t "blue" w p pt 2 

आप इस भूखंड पाने के डेटा फ़ाइल का पैरामीटर और केवल प्रिंट वें ई लाइन अगर उसके पास कुछ मूल्य है: लाल या नीले रंग की तरह।

आप ढाल के साथ पैलेट से छुटकारा पायेंगे।

स्क्रिप्ट को gnuplot iterations का उपयोग कर और बेहतर किया जा सकता है।

+0

धन्यवाद, मैं gnuplot के लिए काफी नया हूं और वाक्यविन्यास मेरे लिए काफी भ्रमित है।अजीब का उपयोग करना काफी सुविधाजनक है – Tombart

+0

@ टॉम्बार्ट यदि आपके पास वाक्य में इस्तेमाल किए गए वाक्यविन्यास के बारे में कोई विशिष्ट प्रश्न है, तो मुझे बताएं और मैं इसके बारे में विस्तार से बताऊंगा। – Woltan

+0

यहां '$ 3' तीसरे कॉलम का मान है लेकिन यह निर्दिष्ट नहीं है कि डिलीमीटर क्या है? क्या इसे स्वचालित रूप से '' के रूप में लिया जाएगा? – damned

2

एक रंग पैलेट (व्यक्तिगत अंक के लिए) किसी भी बिंदु रंग पाने के लिए

plot file using 1:2:3 with points palette 

अब एक पैलेट है कि आप इच्छित रंग पैमाने देता है की स्थापना की जा सकती है। आप रंग को गणना करने के लिए पैलेट सेट कर सकते हैं उदाहरण के लिए एचएसवी रंग मॉडल का उपयोग करके या gnuplot डेमो वेबसाइट पर एक नज़र डालें।

color bar with distinct colors in gnuplot

theta(x) = x<0 ? 0 : 1 
r(x) = 4*x*(1-theta(x-0.25)) 
g(x) = 0.5*theta(x-0.25)*(1-theta(x-0.5)) 
b(x) = x 
set palette model RGB functions r(gray),g(gray),b(gray) 
set title "set palette model RGB functions\n4*x*(1-theta(x-0.25)), 0.5*theta(x-0.25)*(1-theta(x-0.5)), x" 
splot f(x)enter code here