1

これが私がやりたいことの非常に単純化されたバージョンです:

In [44]: data = np.array([[0]*3,[1]*3,[2]*3])

In [45]: data
Out[45]: 
array([[0, 0, 0],
       [1, 1, 1],
       [2, 2, 2]])

In [46]: xaxis = np.array([0,1,2])

In [47]: yaxis = np.array([[0,0.1,0.4],[1.1,1.6,1.9],[2.3,2.6,4]])

In [48]: yaxis
Out[48]: 
array([[ 0. ,  0.1,  0.4],
       [ 1.1,  1.6,  1.9],
       [ 2.3,  2.6,  4. ]])

imshow()グリッドの y 軸の値を使用してプロットを作成したいと思います。(「データ」の各データ値は、y 軸グリッド内の対応する位置に関連付けられた強度値です)

4

1 に答える 1

0

y-axisこの場合は41ピクセルに拡張する必要があると思います。data2次に、次元(3、41)の新しい配列が作成されます。dataこれは、の位置で指定された値で埋められ、新しいy軸に変換されますxaxis。でプロットできます。それは本当に単純な解決策ではありません。yaxisdata2imshow

data = np.array([[0]*3,[1]*3,[2]*3])

xaxis = np.array([0,1,2])

yaxis = np.array([[0,0.1,0.4],[1.1,1.6,1.9],[2.3,2.6,4]])

# expand the y-axis to 4/0.1 = 40 in this case
ydim = int(np.max(yaxis)/np.min(yaxis[where(yaxis!=0.)])) + 1

# create new data array of size (len(xaxis), ydim)
data2 = np.zeros((len(xaxis), ydim))

# fill the new data array according to the values given in data at the positions specified in xaxis and yaxis
for i in xaxis:
    for nr, j in enumerate(yaxis[i]):
        data2[i,int(j*10)] = data[i, nr]
# use interpolation='nearest' to clarify the behaviour and extent x-axis to 40
imshow(data2, extent = (0, ydim-1, ydim-1, 0), interpolation='nearest')
show()

作成した画像

于 2012-12-07T10:26:52.830 に答える