Hinweis
Zum Ende springen, um den vollständigen Beispielcode herunterzuladen.
Bildskalierung mit einem RangeSlider#
Verwendung des RangeSlider-Widgets zur Steuerung der Schwellenwertbildung eines Bildes.
Das RangeSlider-Widget kann ähnlich wie das widgets.Slider-Widget verwendet werden. Der Hauptunterschied besteht darin, dass das val-Attribut von RangeSlider ein Tupel von Gleitkommazahlen (unterer Wert, oberer Wert) anstelle einer einzelnen Gleitkommazahl ist.
Siehe Slider für ein Beispiel zur Verwendung eines Slider zur Steuerung einer einzelnen Gleitkommazahl.
Siehe Slider an diskreten Werten ausrichten für ein Beispiel, bei dem der Slider an diskrete Werte gebunden wird.
import matplotlib.pyplot as plt
import numpy as np
from matplotlib.widgets import RangeSlider
# generate a fake image
np.random.seed(19680801)
N = 128
img = np.random.randn(N, N)
fig, axs = plt.subplots(1, 2, figsize=(10, 5))
fig.subplots_adjust(bottom=0.25)
im = axs[0].imshow(img)
axs[1].hist(img.flatten(), bins='auto')
axs[1].set_title('Histogram of pixel intensities')
# Create the RangeSlider
slider_ax = fig.add_axes([0.20, 0.1, 0.60, 0.03])
slider = RangeSlider(slider_ax, "Threshold", img.min(), img.max())
# Create the Vertical lines on the histogram
lower_limit_line = axs[1].axvline(slider.val[0], color='k')
upper_limit_line = axs[1].axvline(slider.val[1], color='k')
def update(val):
# The val passed to a callback by the RangeSlider will
# be a tuple of (min, max)
# Update the image's colormap
im.norm.vmin = val[0]
im.norm.vmax = val[1]
# Update the position of the vertical lines
lower_limit_line.set_xdata([val[0], val[0]])
upper_limit_line.set_xdata([val[1], val[1]])
# Redraw the figure to ensure it updates
fig.canvas.draw_idle()
slider.on_changed(update)
plt.show()

Referenzen
Die Verwendung der folgenden Funktionen, Methoden, Klassen und Module wird in diesem Beispiel gezeigt
Gesamtlaufzeit des Skripts: (0 Minuten 1,392 Sekunden)