最近我运行了一个旧代码,Matplotlib告诉我
MatplotlibDeprecationWarning:
Unable to determine Axes to steal space for Colorbar.
Using gca(), but will raise in the future.
Either provide the *cax* argument to use as the Axes for the Colorbar,
provide the *ax* argument to steal space from it,
=============================
or add *mappable* to an Axes.
=============================
好吧,我理解这个问题以及cax
和ax
解决方案--我已经修复了我的旧代码--但我不理解“将mappable
添加到Axes”部分,至少在下面的MWE上下文中是这样。
你能**解释一下“add mappable
to an Axes”**的意思吗?
import matplotlib.pyplot as plt
from matplotlib.cm import ScalarMappable
import numpy as np
x = np.linspace(0, 1, 201)
sm = ScalarMappable(norm=plt.Normalize(0.5, 4.5), cmap='cool_r')
for i in range(4):
plt.plot(x, x+(1-x)*np.sin(np.pi*i*x), color=sm.to_rgba(i+1))
cb = plt.colorbar(sm)
cb.set_ticks((1,2,3,4))
plt.tight_layout()
plt.show()
1条答案
按热度按时间xqkwcwgp1#
据我所知,“可Map”是一种图形元素,通常是类似图像的东西或一组散点,通过将一系列给定值通过范数和颜色Map表Map到一系列颜色来着色。所以,这里我假设这意味着,如果这样一个“可Map”的图形元素,作为
plt.colorbar()
的参数,并且该元素也属于给定的子图,matplotlib可以找出从哪个子图窃取空间。另一方面,如果您创建这样一个图形元素而没有将其添加到某个图中,则matplotlib仍然存在疑问。