gpt4 book ai didi

python - matplotlib 从轴获取可映射的颜色条

转载 作者:太空宇宙 更新时间:2023-11-04 09:49:59 24 4
gpt4 key购买 nike

我想添加一个颜色条,但不包含轴在绘图时返回的内容。有时我将东西绘制到函数内的轴上,该函数不返回任何内容。有没有办法从预先完成绘图的轴获取颜色条的可映射?我相信有足够的关于绑定(bind)到轴本身的颜色图和颜色范围的信息。

我想做这样的事情:

def plot_something(ax):
ax.plot( np.random.random(10), np.random.random(10), c= np.random.random(10))

fig, axs = plt.subplots(2)
plot_something(axs[0])
plot_something(axs[1])

mappable = axs[0].get_mappable() # a hypothetical method I want to have.

fig.colorbar(mappable)
plt.show()

编辑

如代码片段中给出的那样,对可能重复的答案可以部分解决我的问题。然而,这个问题更多的是关于从一个轴中检索一个通用的可映射对象,根据 Diziet Asahi 的说法,这似乎是不可能的。

最佳答案

获取可映射对象的方式取决于您在 plot_something() 函数中使用的绘图函数。

例如:

  • plot() 返回一个 Line2D 对象。对该对象的引用是存储在 Axes 对象的列表 ax.lines 中。话虽如此,我认为 Line2D 不能用作 colorbar()
  • 的可映射对象
  • scatter() 返回一个 PathCollection 集合对象。此对象存储在 Axes 对象的 ax.collections 列表中。
  • 另一方面,imshow() 返回一个 AxesImage 对象,该对象存储在 ax.images

您可能必须尝试查看这些不同的列表,直到找到合适的对象来使用。

def plot_something(ax):
x = np.random.random(size=(10,))
y = np.random.random(size=(10,))
c = np.random.random(size=(10,))
ax.scatter(x,y,c=c)

fig, ax = plt.subplots()
plot_something(ax)
mappable = ax.collections[0]
fig.colorbar(mappable=mappable)

关于python - matplotlib 从轴获取可映射的颜色条,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48131232/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com