2011-09-29 20 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でこれをどのようにすることができますか?バーキャップを「手動」で1つずつ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は、あなたは非常に近かった..

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 

enter image description here

キャップラインの幅を設定しますset_markeredgewidth

Matplotlibオブジェクトは非常に多くの属性を持っているため、特定のオブジェクトに対して正しいものを覚えにくいことがよくあります。 IPythonはmatplotlibのイントロスペクションに非常に便利なツールです。私はそれを使用してエラーキャップラインに対応する2Dラインの特性を分析し、それと他のマーカー特性を見つけました。

乾杯

+0

おかげで多くのことを!私たちは同じ方法を使いましたが、私は何とか 'set_markeredgewidth'を見逃しました。 :)したがって、キャップは実際には2D線ではなくMatplotlibのマーカーです。 'errorbar()'の 'capsize'引数は' cap.set_markersize() 'と等価なので、後者は削除できますか? – EOL

+0

あなたがコメントしている間に、私もそれを実現していました。私も写真を変更しました。 – joaquin

+0

@joaquin、 "introspecting matplotlib"にはどのようにiPythonを使用しますか?これは非常に便利なスキルのように聞こえる。 – Blink

関連する問題