import numpy as np
import matplotlib.pyplot as plt
data = np.random.random((10,10))
im = plt.imshow(data)
plt.axis('off')
plt.savefig("question2.png",bbox_inches='tight',pad_inches=0)
plt.show()
如何从plt.imshow()或plt.matshow()提取数据?
要获得在matplotlib轴上绘制的图像的RGBA数组,首先,获取图像对象(在此处im3
)。其次,获取其颜色图(此处为ccmap
)。最后一步,将数据数组传递im3._A
给ccmap
。
import matplotlib.cm as cm
import numpy as np
import matplotlib.pyplot as plt
data = np.random.random((10,10))
# imshow or matshow is OK
#im3 = plt.imshow(data, cmap="viridis_r") #any colormap will do
im3 = plt.matshow(data, cmap="viridis_r")
plt.axis('off')
#plt.savefig("question2.png",bbox_inches='tight',pad_inches=0)
plt.show()
# get the colormap used by the previous imshow()
ccmap = im3.get_cmap()
print(ccmap.name) # 'viridis_r'
# get the image data ***YOU ASK FOR THIS***
img_rgba_array = ccmap(im3._A)
# plot the image data
ax = plt.subplot(111)
ax.imshow(img_rgba_array); #dont need any cmap to plot
样例输出图:
惊人的!这正是我所需要的!嗨swatchai,非常感谢您的帮助:)
@brucelau正确的欣赏方式是接受我的回答。:)
当然。我为此感到高兴:)
@brucelau要将
minimum
数据保存到文件,您只能保存data
和颜色图名称。RGBA可以从它们重建。您的意思是我们可以定义一个函数f,然后重构rbga = f(data)以获取值,对吗?