当试图运行这段受matplotlib文档启发的小代码时,二维图像的透明性与颜色的融合
import numpy as np
import matplotlib.pyplot as plt
test = np.random.random((300, 300))
plt.figure()
plt.imshow(test, alpha = test/test.max())
plt.show()最后,我:
<matplotlib.image.AxesImage at 0x7f8bfe8cc610>Traceback (most recent call last):
File "/Users/darkvador/opt/anaconda3/lib/python3.7/site-packages/matplotlib/backends/backend_qt5.py", line 508, in _draw_idle
self.draw()
File "/Users/darkvador/opt/anaconda3/lib/python3.7/site-packages/matplotlib/backends/backend_agg.py", line 388, in draw
self.figure.draw(self.renderer)
File "/Users/darkvador/opt/anaconda3/lib/python3.7/site-packages/matplotlib/artist.py", line 38, in draw_wrapper
return draw(artist, renderer, *args, **kwargs)
File "/Users/darkvador/opt/anaconda3/lib/python3.7/site-packages/matplotlib/figure.py", line 1709, in draw
renderer, self, artists, self.suppressComposite)
File "/Users/darkvador/opt/anaconda3/lib/python3.7/site-packages/matplotlib/image.py", line 135, in _draw_list_compositing_images
a.draw(renderer)
File "/Users/darkvador/opt/anaconda3/lib/python3.7/site-packages/matplotlib/artist.py", line 38, in draw_wrapper
return draw(artist, renderer, *args, **kwargs)
File "/Users/darkvador/opt/anaconda3/lib/python3.7/site-packages/matplotlib/axes/_base.py", line 2647, in draw
mimage._draw_list_compositing_images(renderer, self, artists)
File "/Users/darkvador/opt/anaconda3/lib/python3.7/site-packages/matplotlib/image.py", line 135, in _draw_list_compositing_images
a.draw(renderer)
File "/Users/darkvador/opt/anaconda3/lib/python3.7/site-packages/matplotlib/artist.py", line 38, in draw_wrapper
return draw(artist, renderer, *args, **kwargs)
File "/Users/darkvador/opt/anaconda3/lib/python3.7/site-packages/matplotlib/image.py", line 619, in draw
renderer, renderer.get_image_magnification())
File "/Users/darkvador/opt/anaconda3/lib/python3.7/site-packages/matplotlib/image.py", line 881, in make_image
unsampled=unsampled)
File "/Users/darkvador/opt/anaconda3/lib/python3.7/site-packages/matplotlib/image.py", line 530, in _make_image
np.asarray(alpha_channel, np.float32) * out_alpha * alpha,
ValueError: operands could not be broadcast together with shapes (740,740) (300,300)我在macos-catalina下面,和python:
Python 3.7.7 (default, Mar 26 2020, 10:32:53)
[Clang 4.0.1 (tags/RELEASE_401/final)] :: Anaconda, Inc. on darwin 请注意,在下列情况下不会发生错误:
plt.show()alpha-value发布于 2020-09-29 09:45:06
在matplotlib 3.1.3文档中,alpha关键字参数必须是标量值。
您应该更新到Matplotlib 3.3.1,因为为alpha参数提供数组必须是在这两个版本之间实现的。
发布于 2020-09-27 18:02:23
您的alpha数组alpha/alpha.max()与实际图像数组test的形状不匹配。从您提供的测试代码中,我们可以创建一个alpha数组,并成功地将其显示为以下代码的α变化图像。因此,您必须确保alpha数组具有与test数组完全相同的形状。
import numpy as np
import matplotlib.pyplot as plt
test = np.random.random((300, 300))
alpha = test / test.max()
print(alpha)
plt.figure()
plt.imshow(test, alpha = alpha)
plt.show()产生下面的图像。

https://stackoverflow.com/questions/64091495
复制相似问题