【发布时间】:2016-02-12 22:58:18
【问题描述】:
我生成了一个 Mandelbrot 图形作为 10000x10000 像素的 numpy 数组:
[[ 100. 100. 100. ..., 12. 12. 13.]
[ 100. 100. 100. ..., 12. 13. 14.]
[ 100. 100. 100. ..., 12. 12. 14.]
...,
[ 3. 3. 3. ..., 3. 3. 3.]
[ 3. 3. 3. ..., 3. 3. 3.]
[ 3. 3. 3. ..., 3. 3. 3.]]
如果我使用 matplotlib 显示数组:
arr = np.zeros((10000, 10000)) # my array
import matplotlib.pyplot at plt
plt.imshow(arr)
plt.show()
我得到了一张非常漂亮的彩色图像。
但是为什么?
除此之外,如果我尝试将其导出到.png,我会得到一个黑白图像:
import PIL.Image as im
iimg = im.fromarray(arr)
iimg = iimg.convert("RGB") # std was "F", but it didn't work
iimg.save("img_mandelbrot.png")
有没有办法将这样的彩色图像导出为 png? matplotlib 似乎不是一个可行的选择,因为分辨率太差了。
【问题讨论】:
-
您可能想澄清您的问题。大多数 matplotlib 2D 绘图例程返回非常漂亮的彩色图像 :)
imshow也是如此;除非您为每个点提供实际颜色(MxNx3[RGB] 或MxNx4[RGBA]),否则二维数组会根据数组的值进行简单着色。 -
见here
-
@julbra 查看我的编辑。
-
为什么 matplotlib 的分辨率“太差”?
savefig()有一个dpi关键字,因此将图形大小与正确的 dpi 相结合,您可以尽可能详细地保存它吗? -
@julbra 谢谢你,我没有想到这个,(我使用的是
matplotlib.pyplot.imsave),提供它作为答案
标签: python image numpy matplotlib python-imaging-library