尝试运行这段源于matplotlib文档Blend transparency with color in 2-D images的代码时:
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
在matplotlib 3.1.3 documentation中,
alpha
关键字参数必须是标量值您应该更新到Matplotlib 3.3.1,因为为
alpha
参数提供数组必须在这两个版本之间实现您的alpha数组
alpha/alpha.max()
与实际图像数组test
的形状不匹配。根据您提供的测试代码,我们可以创建一个alpha数组,并使用下面的代码将其成功显示为一个alpha变化图像。因此,您必须确保alpha
数组的形状与test
数组的形状完全相同制作下面的图片
相关问题 更多 >
编程相关推荐