3

私はこれらのデータ構造を持っています:

  X axis values:
 delta_Array = np.array([1000,2000,3000, 4000, 5000, 6000, 7000, 8000, 9000, 10000])

  Y Axis values
   error_matrix = 
 [[ 24.22468454  24.22570421  24.22589308  24.22595919  24.22598979
    24.22600641  24.22601644  24.22602294  24.2260274   24.22603059]
  [ 28.54275713  28.54503017  28.54545119  28.54559855  28.54566676
    28.54570381  28.54572615  28.54574065  28.5457506   28.54575771]]

matplotlibとpythonを使用してそれらを折れ線グラフとしてプロットするにはどうすればよいですか?

私が思いついたこのコードは、次のようにフラットラインをレンダリングします。figure(3)i = 0

 for i in range(error_matrix.shape[0]):
  plot(delta_Array, error_matrix[i,:])

 title('errors')
 xlabel('deltas')
 ylabel('errors')
 grid()
 show()

ここでの問題は、軸のスケーリングにあるように見えます。しかし、それを修正する方法がわかりません。曲率を正しく表示するためのアイデア、提案はありますか?

ここに画像の説明を入力してください

4

2 に答える 2

3

ax.twinxツイン軸を作成するために使用できます。

import matplotlib.pyplot as plt
import numpy as np

delta_Array = np.array([1000,2000,3000, 4000, 5000, 6000, 7000, 8000, 9000, 10000])

error_matrix = np.array(
    [[ 24.22468454, 24.22570421, 24.22589308, 24.22595919, 24.22598979, 24.22600641, 24.22601644, 24.22602294, 24.2260274, 24.22603059],
     [ 28.54275713, 28.54503017, 28.54545119, 28.54559855, 28.54566676, 28.54570381, 28.54572615, 28.54574065, 28.5457506, 28.54575771]])


fig = plt.figure()
ax = []
ax.append(fig.add_subplot(1, 1, 1))
ax.append(ax[0].twinx())
colors = ('red', 'blue')

for i,c in zip(range(error_matrix.shape[0]), colors):
    ax[i].plot(delta_Array, error_matrix[i,:], color = c)
plt.show()

収量

ここに画像の説明を入力してください

赤い線はに対応しerror_matrix[0, :]、青い線は。に対応しerror_matrix[1, :]ます。

別の可能性は、比率をプロットすることerror_matrix[0, :]/error_matrix[1, :]です。

于 2012-11-18T21:10:48.547 に答える
1

Matplotlibはあなたに正しいことを示しています。同じyスケールで両方の曲線が必要な場合は、それぞれの変動よりも差がはるかに大きいため、曲線は平坦になります。異なるyスケールを気にしない場合は、unutbuが提案したようにしてください。

関数間の変化率を比較したい場合は、それぞれの最大値で正規化することをお勧めします。

import matplotlib.pyplot as plt
import numpy as np

plt.plot(delta_Array, error_matrix[0] / np.max(error_matrix[0]), 'b-')
plt.plot(delta_Array, error_matrix[1] / np.max(error_matrix[1]), 'r-')
plt.show()

関数

ちなみに、2D配列の次元を明示する必要はありません。を使用する場合error_matrix[i,:]は、と同じerror_matrix[i]です。

于 2012-11-19T04:48:01.867 に答える