当我提出here(2D)时,我想知道如何将图像输入绘制到图中的范围内 . 更清楚的是,这就是我需要的:
我有一个400 * 400的图像,它是根据间隔为-1..1的函数生成的 . 所以,我做翻译来保存这些数据,如下所示:
x = Utils.translate(pos_x, 0, self.width, -1, 1)
y = Utils.translate(pos_y, 0, self.height, -1, 1)
data = Utils.map_position_to_function(x, y)
即,首先我将其位置映射到我的范围,然后根据这个“新位置”计算de f(x,y)并保存数据 . 此外,当我保存此图像时,我进行数据转换,使其适合0..255范围,生成灰度图像 .
问题是,稍后,我必须在功能范围内表示图像轮廓 . 所以,我有一个400 * 400的图像,我必须在一个范围为-1..1的图中表示 .
在2D中,我可以使用以下代码执行此操作:
im = plt.array(Image.open('Mean.png').convert('L'))
plt.figure()
CS = plt.contour(im, origin='image', extent=[-1, 1, -1, 1])
plt.clabel(CS, inline=1, fontsize=10)
plt.savefig("CountorLevel2D.png")
在3D中,我试过这个:
fig = plt.figure()
ax = fig.gca(projection='3d')
row = np.linspace(0, 400, 400)
X,Y = np.meshgrid(row,row)
CS = ax.contour(X, Y, im, cmap=cm.coolwarm, extent=[-1, 1, -1, 1])
plt.clabel(CS, inline=1, fontsize=10)
plt.savefig("ContourLevel3D.png")
但X和Y仍然在0..400范围内 . 我不知道出了什么问题,或者我要做的是让X和Y在-1..1范围内 . 此外,没有显示标签 .
此外,由于im是图像,我读取的值范围在0..255之间 . 我怎么能在-1..1范围内呈现这个呢?
提前致谢 . (:
1 回答
试试这个: