как отобразить все интервалы в цветовой панели с помощью matplotlib - PullRequest
0 голосов
/ 30 октября 2018

Это мой код. Я упомянул здесь 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()

enter image description here

1 Ответ

0 голосов
/ 30 октября 2018

Аргумент к 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()

enter image description here

...