首页 > 解决方案 > 如何使用 matplotlib 在颜色栏中显示所有间隔

问题描述

这是我的代码。我在这里提到了 50 个间隔,当我拖动滑块时只有 6 或 7 个间隔,但我想在我的颜色栏中显示我所有的间隔。所以任何人都可以指导我。提前谢谢你。

import numpy as np
import matplotlib.pyplot as plt
from matplotlib.widgets import Slider, Button
import matplotlib.colors
ax = plt.subplot(111)
plt.subplots_adjust(left=0.25, bottom=0.25)
img_data = np.random.rand(50,50)

c_max = 2
img = ax.imshow(img_data, interpolation='nearest')
cb = plt.colorbar(img)
axcolor = 'lightgoldenrodyellow'
ax_cmax  = plt.axes([0.25, 0.15, 0.65, 0.03])
s_cmax = Slider(ax_cmax, 'max', 0, 50, valfmt=c_max)
def update(val, s=None):
    # _cmin = s_cmin.val
    _cmax = s_cmax.val
    img.set_clim(_cmax)
    plt.draw()
s_cmax.on_changed(update)

plt.show()

在此处输入图像描述

标签: python-2.7matplotlibcolorbar

解决方案


Slider调用的参数valfmt应该是一个字符串,用于格式化滑块值。

因此,如果您想显示浮点数的 2 位小数,则需要将c_max = "%1.2f". 请注意,如果要将最小值保持在 0,则也需要将其设置为img.set_clim(0, _cmax)

c_max = "%1.2f"
img = ax.imshow(img_data, interpolation='nearest')
cb = plt.colorbar(img)
axcolor = 'lightgoldenrodyellow'
ax_cmax  = plt.axes([0.25, 0.15, 0.65, 0.03])
s_cmax = Slider(ax_cmax, 'max', 0, 50, valfmt=c_max)
def update(val, s=None):
    # _cmin = s_cmin.val
    _cmax = s_cmax.val
    img.set_clim(0, _cmax) 
    plt.draw()
s_cmax.on_changed(update)

plt.show()

在此处输入图像描述


推荐阅读