如何设置matplotlib以显示数组的每个图像?
我希望每当我点击右箭头,它就会显示下一张图像等等......
这可能吗?
width = 14
height = 14
import matplotlib.pyplot as plt
import matplotlib.image as mpimg
data_images = X_train.reshape(X_train.shape[0],width,height)
print "Shape " ,data_images.shape #Shape (50000L, 14L, 14L)
plt.imshow(data_images[0])
plt.show()
我想将 “data_images” 变量传递给plt.imshow,所以每当我点击matplotlib上的下一个时,它都会显示下一张图片。
答案 0 :(得分:1)
plt.connect()
的工作示例。
您可以按任意键更改图像。
import matplotlib.pyplot as plt
data_images = [
[[1,2,3],[1,2,3],[1,2,3]],
[[1,1,1],[2,2,2],[3,3,3]],
[[1,2,1],[2,2,2],[1,2,1]],
]
#----------------------------------
index = 0
def toggle_images(event):
global index
index += 1
if index < len(data_images):
plt.imshow(data_images[index])
plt.draw()
else:
plt.close()
#----------------------------------
plt.imshow(data_images[index])
plt.connect('key_press_event', toggle_images)
plt.show()
答案 1 :(得分:1)
我会在IPython笔记本中使用ipywidgets
来完成此操作。这是一个例子:
%matplotlib inline
import matplotlib.pyplot as plt
import numpy as np
from ipywidgets import interact
images = np.random.random((500, 14, 14))
def browse_images(images):
N = images.shape[0]
def view_image(i=0):
plt.imshow(images[i], cmap='gray', interpolation='nearest')
plt.title('Image {0}'.format(i))
interact(view_image, i=(0, N-1))
browse_images(images)
编辑:笔记本页面中的结果将如下所示:
您可以按向左或向右箭头前进滑块并查看下一张图像。
答案 2 :(得分:1)
在笔记本中你可以比使用内联更好一些:
View
然后在下一个单元格中
View
这将为您提供一个pannable / zoom数字。在mpl 1.5.0中,您还可以默认获取光标下的像素值。
(我在tmpnb.org上测试过这个)