相关疑难解决方法(0)

从matplotlib中的数字中删除colorbar

这应该很容易,但我很难用它.基本上,我在matplotlib中有一个子图,我在每次调用函数时都会绘制一个hexbin图,但每次调用该函数时我都会得到一个新的颜色条,所以我真正想做的就是更新colorbar .不幸的是,这似乎不起作用,因为colorbar附加的对象正在由subplot.hexbin重新创建.

def foo(self):
   self.subplot.clear()
   hb = self.subplot.hexbin(...)
   if self.cb:
      self.cb.update_bruteforce() # Doesn't work (hb is new)
   else:
      self.cb = self.figure.colorbar(hb)
Run Code Online (Sandbox Code Playgroud)

我现在正处于这个烦人的地方,我试图完全删除颜色条轴并简单地重新创建它.不幸的是,当我删除颜色条轴时,子图轴不会回收空间,调用self.subplot.reset_position()并没有按照我的想法进行.

def foo(self):
   self.subplot.clear()
   hb = self.subplot.hexbin(...)
   if self.cb:
      self.figure.delaxes(self.figure.axes[1])
      del self.cb
      # TODO: resize self.subplot so it fills the 
      #    whole figure before adding the new colorbar
   self.cb = self.figure.colorbar(hb)
Run Code Online (Sandbox Code Playgroud)

有没有人有什么建议?

非常感激!亚当

python matplotlib colorbar

24
推荐指数
5
解决办法
2万
查看次数

如何检查图中是否存在colorbar

问题:有没有办法检查颜色条是否已经存在?

我正在制作许多带有循环的情节.问题是每次迭代都会绘制颜色条!

在此输入图像描述

如果我可以确定颜色条是否存在,那么我可以将颜色条功能放在if语句中.

if cb_exists:
    # do nothing
else:
    plt.colorbar() #draw the colorbar
Run Code Online (Sandbox Code Playgroud)

如果我使用多处理来制作数字,是否可以防止添加多个颜色条?

import numpy as np
import matplotlib.pyplot as plt
import multiprocessing

def plot(number):
    a = np.random.random([5,5])*number
    plt.pcolormesh(a)
    plt.colorbar()
    plt.savefig('this_'+str(number))

# I want to make a 50 plots
some_list = range(0,50)
num_proc = 5
p = multiprocessing.Pool(num_proc)
temps = p.map(plot, some_list)
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

我知道在绘制下一次迭代之前我可以用plt.clf()和plt.cla()清除这个图.但是,我在我的底图图层上有数据我不想重新绘制(这会增加创建绘图所需的时间).所以,如果我可以删除颜色条并添加一个新颜色,我会节省一些时间.

python matplotlib colorbar

6
推荐指数
1
解决办法
1583
查看次数

标签 统计

colorbar ×2

matplotlib ×2

python ×2