0

通常の線付きプロットの背後にあるビットマップ イメージとして表示したい numpy 2d 配列があります。

import matplotlib as mpl
from numpy import arange

figure = mpl.figure.Figure(dpi=70)

image = my_numpy_array #This is a regular float32 2D array created somewhere else

#I'm using a single sinus phase but the plot could be any (x, y) based function
x = arange(0, 360, 0.01)
y = 100*sin(pi*self.x/180)

subplot = figure.add_subplot(111)
self.subplot.imshow(image) #Doesn't work; how do I display the bitmap in the same subplot
self.subplot.plot(x,y)

figure.show() #I see the graphic and the sinus just fine but not my bitmap

最終的には、次のようなものが欲しいです。

ここに画像の説明を入力

ここで、0 は白に対応し、0.01 から 1 の間の任意の値がカラースケールに従って表示されます。現在、正弦波は見えますが、ドットは見えません。

4

1 に答える 1

4

実際、あなたが提供したコードは機能します。0プロットされたときの画像は から までの x 軸と からまでimage.widthの y 軸上に表示さ0れるimage.heightので、それらを揃える必要があることを覚えておく必要があります。

import numpy as np
import matplotlib.pyplot as plt

# Create a random image 200x360
image = np.random.randn(200, 360)


# Create a sin function from x = 0 - 360, y = -100 - 100
x = np.arange(0, 360, 0.01)
y = 100 * np.sin(np.pi * x / 180)

figure = plt.figure(dpi=70)
subplot = figure.add_subplot(111)
subplot.set_xlim(0, 360)
subplot.set_ylim(-100, 100)
subplot.imshow(image, extent=[min(x), max(x), min(y), max(y)])
subplot.plot(x, y)

figure.show()

これは画像を生成します:

プロットの背後にあるイメージ

于 2013-08-08T18:47:46.503 に答える