2016-09-28 4 views
1

私は関数定義で単純な何かを間違っていると確信していますが、それを出す。誰かが助けることができれば、私は永遠にそれらを愛するでしょう。Pythonプロットは実行されません: 'xとyは同じ第1次元を持たなければなりません'

import matplotlib.pyplot as plt 
import scipy as sp 

lamb = sp.array([1100, 1650, 2200, 2750, 3300, 3850, 4400, 4950, 5500, 6050, 6600]) 
fno = sp.array([3.779, 2.443, 1.788, 1.361, 1.049, 0.831, 0.689, 0.590, 0.524, 0.486, 0.463]) 
fla = sp.array([0.743, 0.622, 0.555, 0.507, 0.468, 0.434, 0.401, 0.371, 0.348, 0.336, 0.320]) 
ebv = .1433 

fig = plt.figure() 
ax = fig.add_subplot(111) 

def alam(fno, fla): 
    return (2.5*sp.log(fno/fla)) 

def rlam(lamb): 
    return (alam/ebv) 

plt.plot(lamb, rlam,'k-') 

plt.show() 

私はおそらく馬鹿ですので、私をばかと呼んでも構いません。ありがとう!

答えて

1

明らかに問題があることがわかります。 plt.plot(x、y)に対して2つの配列を与えなければなりません。あなたの場合、関数名である配列とrlamを与えました。明らかに、エラーがあります。

python関数の使い方の詳細を調べてみてください。私はプロットの使用法と入力引数を使ったPython関数の使用法を示す小さなコードスニペットを追加しました。

import matplotlib.pyplot as plt 
import scipy as sp 

lamb = sp.array([1100, 1650, 2200, 2750, 3300, 3850, 4400, 4950, 5500, 6050, 6600]) 
ebv = .1433 

fig = plt.figure() 
ax = fig.add_subplot(111) 

def test_func(lamb): 
    return lamb/ebv 

plt.plot(lamb, test_func(lamb),'k-') 
plt.show() 
関連する問題