2017-08-03 9 views
0

このコードでは、指数関数的に減衰するIV曲線をプロットする必要がありますが、それは間違った方向にあり、ミラーリング/フリップする必要があります。 x andyの値は正しい軸にプロットされておらず、切り替えが必要です。電圧を与えている間に指数関数的に減少する電流との関係を示しています。あらゆる種類のデバッグを試みましたが、指数関数的な成長や同じ種類の減衰を示し続けました。ここでPythonプロットでの問題

import matplotlib.pyplot as plt 
import numpy as np 
xdata=np.linspace(23,0)# voltage data 
ydata=np.exp(xdata)# current data 
plt.plot(ydata,xdata) 
plt.title(r'IV-curve') 
plt.xlabel('Voltage(V)') 
plt.ylabel('Current(I)') 
plt.show() 

が、それは次のようになります。またhttp://imgur.com/a/NJf3g

、このように私と一緒にクマは些細なコードのように見えるかもしれませんが、私は、文字通り、先週初めてコーディングを開始、私はいくつかのバンプを取得します道路:)に

+0

を私は答えを掲載しました。 – sera

+0

@seraあなたのコードを試しましたが、ソートが定義されていないと言われました – user8173426

+0

私のコードを編集しました。使用ydata = np.sort(ydata) – sera

答えて

0

それは多分

plt.plot(ydata,xdata) 

があるべきように見える

plt.plot(xdata,ydata) 

これで軸が修正されます。しかし、あなたはまだ崩壊する指数関数を得るつもりはありません。どうして?プロットのためではなく、あなたのデータのためです。あなたのデータは指数関数的に増加しています。あなたはxdataの前で

ydata=np.exp(-xdata) 

すなわちマイナス記号のような崩壊利用の何かをしたい場合。

+0

を試してみてください。軸が正しい。問題はydataです。 – sera

1

問題は、ご使用のydataが正しく注文されていないことです。

解決策は簡単です。 ydataの順序を変更します。

import matplotlib.pyplot as plt 
import numpy as np 

xdata = np.linspace(23,0)# voltage data 
ydata = np.exp(xdata)# current data 
ydata = np.sort(ydata) 

plt.plot(ydata,xdata) 
plt.title(r'IV-curve') 
plt.xlabel('Voltage(V)') 
plt.ylabel('Current(I)') 

plt.show() 

結果:

がこれを行う

enter image description here