2016-09-02 7 views
2

plt.stemを使うときは、太い幹線をPythonで作ってみたい。matplolibで太い幹線を作る方法

は、ここに私のコード

import matplotlib.pyplot as plt 
import numpy as np 

N = 20 

n = np.arange(0, 2*N, 1) 

x = np.exp(-n/N)*np.exp(1j * 2*np.pi/N*n) 

plt.stem(n,x.real) 

plt.show() 

私はplt.stem(n,x.real,linewidth=10)変更しましたが、何も変わっていないです。 plt.stemlinewidthを設定する機能はありませんか?

答えて

6

plt.stemのドキュメントでは、プロットによって作成されたすべての線オブジェクトが返されることが示されています。手動でプロットした後の線が太く作るためにそれを使用することができます

import matplotlib.pyplot as plt 
import numpy as np 

N = 20 
n = np.arange(0, 2*N, 1) 
x = np.exp(-n/N)*np.exp(1j * 2*np.pi/N*n) 

markers,stems,base = plt.stem(n,x.real) 
for stem in stems: 
    stem.set_linewidth(10) 
plt.show() 

result

+0

あなたの答えは、非常に私を助けてありがとう:) –

+0

@연평도꽃게잡이私はそれがなかった:)しかし、他の答えはそれを行うには*正しい*方法はおそらくあることに注意してうれしいですそれははるかにエレガントです。 –

4

matplotlibのドキュメントexampleに示されているように、これはまたplt.setp()を使用して変更することができます。 plt.setp() methodでは、作成したアーティストオブジェクトのプロパティを設定できます。

import matplotlib.pyplot as plt 
import numpy as np 

x = np.linspace(0.1, 2*np.pi, 10) 
markerline, stemlines, baseline = plt.stem(x, np.cos(x), '-.') 
plt.setp(stemlines, 'linewidth', 4) 

plt.show() 

enter image description here

+1

ああ、とてもいいです!私はsetpについて知っていることは知っていませんが、将来私はそれを使用することを確信しています:)私は[それもリンクしています](http://matplotlib.org/api/pyplot_api.html#matplotlib.pyplot。 setp)、おそらく広く知られているわけではありません。 –

+1

@Andras良いアイデア、編集済み。 –

+0

良い、それは非常に簡単で、いつも私はそれを使用します。 –

関連する問題