2017-11-14 1 views
3

의 MATLAB 2017a에서 실행할 수 없습니다 matlab에 예제 코드 (리눅스 64bit를) 이 https://cn.mathworks.com/help/matlab/ref/bar.htmlmatlab에 :하려면 CData이 존재 없음 공공 재산을 바 없다

b = bar(rand(10,1)); 
b.FaceColor = 'flat'; 
b.CData(2,:) = [.5 0 .5]; 

그것은 특정 줄을 색상과 같은 경고를 할 수 없습니다

matlab.graphics.chart.primitive.Bar 클래스에 대한 공용 속성 CData가 없습니다.

Matlab 2017b의 특정 기능 만 알지 못합니다.

이 코드는 특정 바를 색칠하기위한 것입니다. Matlab 2012a에서는 다음과 같이 쉽게 할 수 있습니다 :

bh=bar(MyStem); h=get(bh, 'children'); 
shading flat; set(h,'FaceVertexCData',MyColor); 

Matlab 2017이이 기능을 제거한 이유를 이해할 수 없습니다.

+1

는'CData'는 2017b의 새로운 속성입니다. 한 막대 만 색을 변경하려면 다음과 같은 좋은 아이디어가 있습니다. https://stackoverflow.com/questions/45568120/matlab-bars-changing-the-color-of-the-bar-and-the -space-between-bars-axes – Adiel

+0

빠른 답을 보내 주셔서 감사 드리며 Matlab 2017b 이전에는 CData도없고'get (barHandle, 'children')'도 없으므로 당황 스럽습니다. – Nico

답변

0

속성에 대해서는 이미 주석에 썼습니다. 어쨌든, 제안 된 것보다 더 간단 할 수 있다고 생각 또 다른 해결 방법은, 그 수 있습니다 :

x=rand(1,10); 
b=bar([x;zeros(1,length(x))]); 
xlim([0.5 1.5]) 
set(b,'FaceColor','r') 
set(b(2),'FaceColor','b') 

enter image description here

정기적 막대 그래프에서와 같이 막대 번호를하려는 경우, 당신이 할 수있는 이 추가

set(gca,'XTick',0.5+[b.XOffset]) 
set(gca,'XTicklabels',1:length(x)) 

enter image description here

0

당신이 좋아이 찾고있는 것을 얻을 수 있습니다

b = bar([rand(1,3);nan(1,3)],'b'); 
b(2).FaceColor = 'r'; 

또한 (가끔 사용해야 연습 인) 다른 값으로 바 기능을 여러 번 호출하여이 작업을 수행 할 수 있습니다 :

A = [1,2,3,4,1,3,2]; 

bar([1],A(1),'FaceColor','r'); 
bar([2:4],A(2:4),'FaceColor','g'); 
bar([5:7],A(5:7),'FaceColor','b'); 
+0

빠른 답장을 보내 주셔서 감사합니다. 분명히 이것은 해결 방법이지만 Matlab 2017b 이전에는 분명히 나쁜 경험이었습니다. 보통의 Matlab 스타일에서는'bar ([2 : 4], A (2 : 4), 'FaceColor', [1 0 0; 0 1 0; 0 0 1]);'와 같아야하지만, 시간 나는 정말로 실망한다!! – Nico

+0

정확히 당신을 실망시키는 것은 무엇입니까? 작업을 릴리스해야하고 다른 MATLAB 버전에서 실행되는지 확인하려면 언제나 버전 확인을 할 수 있습니다. –

+0

아, 알겠습니다. 변경 사항을 매우 큰 그래프의 루프로 요약 할 수 있습니다. –