Python 交互式地将颜色条记号更改为对数格式

Python 交互式地将颜色条记号更改为对数格式,python,matplotlib,colorbar,Python,Matplotlib,Colorbar,我正在设计一个Matplotlib2D贴图,其中我希望在颜色条的厚度标签的法线和对数缩放之间进行交互更改(而不是更改颜色网格)。因此,我需要一个单选按钮,可以从以下位置更改标签: 到 为此,我设计了一个单选按钮 import numpy as np import matplotlib as mpl import matplotlib.pyplot as plt import matplotlib.colors as colors from matplotlib.widgets import

我正在设计一个
Matplotlib
2D贴图,其中我希望在颜色条的厚度标签的法线和对数缩放之间进行交互更改(而不是更改颜色网格)。因此,我需要一个单选按钮,可以从以下位置更改标签:

为此,我设计了一个
单选按钮

import numpy as np
import matplotlib as mpl
import matplotlib.pyplot as plt
import matplotlib.colors as colors
from matplotlib.widgets import RadioButtons

def scalefunc(label):
    if label == 'Normal':
        cb.set_format(None)
        fig.canvas.draw_idle()
    elif label == 'Log':
        cb.set_format(LogFormatter(10, labelOnlyBase=False))
        fig.canvas.draw_idle()

Xi = np.random.random((100, 100))
Yi = np.random.random((100, 100))
Zi = np.random.random((100, 100))

fig, ax = plt.subplots(figsize=(16,10))
fig.subplots_adjust(left=0.23, bottom=0.25)

pcm = ax.pcolormesh(Xi,Yi,Zi, cmap = 'gist_gray')
cb = plt.colorbar(pcm, extend='max', format = None, pad = 0.04)

buttonax3 = plt.axes([0.04375, 0.7775, 0.075, 0.075])
scale_button = RadioButtons(buttonax3, ('Normal', 'Log'), activecolor='steelblue')
scale_button.on_clicked(scalefunc)

plt.show()
但这让我意识到,
colorbar
没有
set\u format
属性,因为我得到了错误

AttributeError: 'Colorbar' object has no attribute 'set_format'
这让我感到困惑,因为我可以使用
格式
选项将颜色栏的标签直接设置为对数:

pcm = ax.pcolormesh(Xi,Yi,Zi, cmap = 'gist_gray')
cb = plt.colorbar(pcm, extend='max', format = 
                  LogFormatter(10, labelOnlyBase=False), pad = 0.04)

那么,我需要如何设计
scalefunc
函数才能在颜色栏上的两个厚标签之间切换呢

现在还不清楚你想在这里完成什么。是否要更改标签的格式?是否要更改colorbar(和colormesh)的颜色比例?在任何情况下,a都会有帮助。@ImportanceOfBeingErnest我想更改thicklabels的格式,而不是颜色缩放本身。我已经编辑了我的问题。如果a可用,我很乐意研究这个问题。否则其他人可能会想看它。@ImportanceOfBeingErnest我想我现在已经给出了所有的信息,没有添加我用来构造彩色网格的不必要的数据。这是根据吗?现在还不清楚你想在这里完成什么。是否要更改标签的格式?是否要更改colorbar(和colormesh)的颜色比例?在任何情况下,a都会有帮助。@ImportanceOfBeingErnest我想更改thicklabels的格式,而不是颜色缩放本身。我已经编辑了我的问题。如果a可用,我很乐意研究这个问题。否则其他人可能会想看它。@ImportanceOfBeingErnest我想我现在已经给出了所有的信息,没有添加我用来构造彩色网格的不必要的数据。这是根据什么规定的?