2012-09-01 18 views
14

में सलाखों का रंग बदलता है क्या गतिशील रूप से ग्नुपलॉट स्क्रिप्ट में बार के रंग को बदलना संभव है? मेरे पास निम्न स्क्रिप्टग्नुपलॉट हिस्टोग्राम

reset 
fontsize = 12 
set term postscript enhanced eps fontsize 
set output "bargraph_speedup.eps" 
set style fill solid 1.00 border 0 
set style histogram 
set style data histogram 
set xtics rotate by -45 
set grid ytics linestyle 1 
set xlabel "Benchmarks" font "bold" 
set ylabel "Relative execution time vs. reference implementation" font "bold" 
set datafile separator "," 
plot 'bm_speedup.dat' using 2:xtic(1) ti "Speedup" linecolor rgb "#00FF00" 

जो इस साजिश उत्पन्न करता है:

Generated plot

यह सलाखों जो शून्य लाल नीचे हैं के रंग बनाने के लिए संभव है?

धन्यवाद,
स्वेन

+0

आप 'आरजीबी वैरिएबल' में देखना चाहते हैं - एक तीसरा कॉलम जोड़ना जो हरे रंग के "लिनटाइप" या लाल रंग को निर्दिष्ट करता है कि यह मान सकारात्मक या नकारात्मक है या नहीं। – mgilson

उत्तर

8

आप boxes शैली का उपयोग इस व्यवहार की नकल कर सकते हैं:

मेरा परीक्षण डेटा:

zip 2 
baz 2 
bar -1 
cat 4 
foo -3 

और फिर gnuplot के साथ साजिश रचने:

set style line 1 lt 1 lc rgb "green" 
set style line 2 lt 1 lc rgb "red" 
set style fill solid 
plot 'test.dat' u (column(0)):2:(0.5):($2>0?1:2):xtic(1) w boxes lc variable 
#     #xval:ydata:boxwidth:color_index:xtic_labels 
+0

एक समाधान की तरह लगता है! –

2

प्रतीत नहीं हिस्टोग्राम की तरह आप यह कर देता है है। इस तरह हो सकता है:

set boxwidth 0.3 
f(v)=v<0?1:2 
plot 'bm_speedup.dat' using 0:2:(f($2)):xticlabels(1) with boxes ti "Speedup" lc variable 
3

आप दो भागों, सकारात्मक मूल्यों और नकारात्मक में अपनी डेटा फ़ाइल को विभाजित कर सकता है, और उन्हें अलग से साजिश:

plot 'bm_speedup_pos.dat' using 2:xtic(1) ti "Faster" linecolor rgb "#00FF00", \ 
    'bm_speedup_neg.dat' using 2:xtic(1) ti "Slower" linecolor rgb "#FF0000" 

या, यदि आप केवल कुछ ही ग्राफ़ बनाने की जरूरत है , कुछ बार, एक सामान्य तकनीक gnuplot में कच्चे ग्राफ को उत्पन्न करना है, फिर रंगों को समायोजित करने के लिए इसे एक छवि संपादक में पोस्ट-प्रोसेस करें। यदि आप उस मार्ग पर जाते हैं, तो मेरा सुझाव है कि gnuplot एसवीजी प्रारूप में ग्राफ उत्पन्न करे, जो आपको किसी भी बिटमैप स्वरूपों की तुलना में बेहतर दिखने वाले ग्राफ प्रदान करेगा।

+0

मुझे लगता है कि मैं साजिश को स्थगित करने की कोशिश करूंगा। अच्छा विचार, यद्यपि! –

2

वास्तव में आप भी linecolor rgb चर का उपयोग कर सकते हैं और इस तरह का रंग दें:

plot 'bm_speedup.dat' using 2:xtic(1):($2 >= 0 ? 0x00FF00 : 0xFF0000) ti Speedup lc rgb variable 
संबंधित मुद्दे