2012-11-07 9 views
7

के आधार पर अलग-अलग रंगों के साथ सलाखों को भरें, मैं नकारात्मक बार के लिए सकारात्मक लाल के लिए नीले रंग के रंग के अलग-अलग रंगों में अलग-अलग बार छाया करने की कोशिश कर रहा हूं। मुझे इंटरनेट पर कुछ भी नहीं मिल रहा है जो काम करता है। मैं अपने कोड के नीचे मैं हर बार नहीं बल्कि प्रत्येक बार के लिए अलग रंगों की तुलना में, पहली बार के मान के अनुसार रंग का लगता है:मैटलैब बार ग्राफ - साइन और परिमाण

c1=zeros(32,3); 
c2=zeros(32,3); 
for i=1:3 
    c1(:,i) = linspace(r(i),w(i),32); 
    c2(:,i) = linspace(w(i),b(i),32); 
end 
c= [c1(1:end-1,:);c2]; 
subplot(2,2,2) 

bar(Numbers(end-7:end,1)), shading interp 
caxis([-8 8]), colormap(c), colorbar 

आपकी मदद

उत्तर

1
figure 
hold on 
bar(1, 1, 'red') 
bar(2, -1, 'blue') 
+0

आप प्रत्येक व्यक्ति के लिए अलग-अलग बार बार फोन करने का प्रस्ताव है: छायांकित, आप caxis के साथ संयोजन में उचित रूप से cdata सेट करना होगा प्राप्त करने के लिए? सलाखों की संख्या तय नहीं होने पर इस समाधान का उपयोग कैसे करें? –

+0

यदि बार की संख्या तय नहीं होती है तो आप आमतौर पर लूप का उपयोग करेंगे। –

+0

हाय गेल - यह मेरे कोड में कहां फिट होगा? बार की संख्या चर हो सकती है। आपकी मदद के लिए धन्यवाद –

5

आप गुण बदल सकते हैं के लिए धन्यवाद

y=rand(10,1)*3-1.5; % some data 

hb=bar(y); 
set(get(hb,'children'),'cdata', sign(y)); 
colormap([1 0 0; 0 0 1]); % red & blue in rgb 

bar plot with binary colors

012: sign साथ -1/0/1, और उसके बाद करने के लिए बार वस्तु का एक द्विआधारी लाल/नीले रंग मैप का उपयोग

आप भविष्य की जानकारी here पा सकते हैं।

संपादित करें:

y=rand(10,1)*3-1.5; % some data 
hb=bar(y); 

% the colormap 
Mc = 16; 
Nc = Mc*2+1; % number of colors, uneven so there is a neutral middle 
rgb = [1 0 0;0 0 1]; 
cmap = [linspace(rgb(1,1),rgb(2,1),Nc)' linspace(rgb(1,2),rgb(2,2),Nc)' linspace(rgb(1,3),rgb(2,3),Nc)' ]; 
colormap(cmap); 

% cdata 
c = y; 
set(get(hb,'children'),'cdata', c); 
cmax = max(abs(c)); 
caxis([-cmax cmax]); 

bar plot with shaded colors

+1

आसान कोलोराटा-मैपिंग के लिए, 'कैक्सिस' कमांड का उपयोग करें: 'कैक्सिस ([- 20,20])' न्यूनतम रंगीन रंग को -20 पर रखता है, और अधिकतम +20 पर, शून्य के आसपास समरूपता सुनिश्चित करता है। तो सभी के बाद एक सरल समाधान है :) – Jonas

+0

@ जोनास: महान, thx में संपादित होगा !! –

+0

यह बहुत अच्छा है, बहुत बहुत धन्यवाद –