2011-09-29 4 views
31

Matplotlib의 오차 막대 캡의 선 너비는 어떻게 바꿀 수 있습니까?matplotlib에서 오류 막대 줄의 너비를 설정하는 방법은 무엇입니까?

나는 다음과 같은 코드를 시도 :

불행하게도
(_, caplines, _) = matplotlib.pyplot.errorbar(
    data['distance'], data['energy'], yerr=data['energy sigma'], 
    capsize=10, elinewidth=3) 

for capline in caplines: 
    capline.set_linewidth(10) 
    capline.set_color('red') 

pp.draw() 

, 이것은 캡의 색상을 업데이트,하지만 하지 업데이트 라인은 캡의 폭 않습니다!

결과 효과는 다음 그림에서 "지방 오차 막대 라인/얇은 캡"과 유사합니다 enter image description here

그것은 경우에 "지방"바 캡을 가질 것이 좋을 것이다; 이것이 Matplotlib에서 어떻게 할 수 있습니까? 바 캡을 "수동으로"드로잉 할 때는 plot()을 하나씩 사용하는 것이 좋지만 가장 간단한 방법이 가장 좋습니다.

답변

9

이는 @의 호아킨의 답변에 따라,하지만 (당신은 그냥 특별한 스타일링 일반 오류 캡하려는 경우) 좀 더 간결 :

distance = [1,3,7,9] 
energy = [10,20,30,40] 
sigma = [1,3,2,5] 

plt.errorbar(distance, 
    energy, 
    sigma, 
    capsize=5, 
    elinewidth=2, 
    markeredgewidth=2) 

enter image description here

29

EOL, 당신은 매우 가까웠다 ..

enter image description here

set_markeredgewidth

distance = [1,3,7,9] 
energy = [10,20,30,40] 
sigma = [1,3,2,5] 

(_, caps, _) = plt.errorbar(distance, energy, sigma, capsize=20, elinewidth=3) 

for cap in caps: 
    cap.set_color('red') 
    cap.set_markeredgewidth(10) 

plt.show 

캡 라인의 폭을 설정합니다.

Matplotlib 객체에는 너무 많은 속성이있어 주어진 객체에 맞는 객체를 기억하기가 어렵습니다. IPython은 matplotlib에 대한 introspecting을위한 매우 유용한 도구입니다. 오류 뚜껑 선에 해당하는 2D 선의 특성을 분석하기 위해이 도구를 사용했고 그 점과 다른 마커 속성을 발견했습니다.

건배

+0

덕분에 많은 ! 우리는 같은 방법을 사용했지만, 어떻게 든 set_markeredgewidth를 놓쳤습니다. :) 그래서, 대문자는 사실 2D 마커와는 달리 Matplotlib에 대한 마커입니다. 그것은'errorbar()'의'capsize' 인자가'cap.set_markersize()'와 동등한 것으로 보이므로, 후자를 제거 할 수 있습니까? – EOL

+0

당신이 논평하는 동안 나는 또한 그것을 깨닫고있었습니다. 나는 또한 그림을 바꿨다. – joaquin

+0

@joaquin, "introspecting matplotlib"에 iPython을 어떻게 사용합니까? 이것은 매우 유용한 기술처럼 들립니다. – Blink

관련 문제