Объединение двух ползунков matplotlib в один

#python #matplotlib #merge #widget #slider

Вопрос:

В настоящее время я использую 2 ползунка для установки годового диапазона графика (минимального и максимального). Могу ли я каким — то образом объединить два ползунка в один-так, чтобы он выглядел как обычный слайдер Windows, который может быть пользовательским виджетом ? Я не хочу использовать tkinter или Qt.

Кроме того, при запуске программы открываются 2 окна, первое из которых быстро исчезает. Это вызвано использованием слайдера. Знаете ли вы какое-либо исправление для открытия только главного окна, а не окна-заставки?…

В-третьих, я получаю предупреждение пользователя: эта цифра включает оси, которые не совместимы с tight_layout (), поэтому результаты могут быть неверными. Любые предложения будут высоко оценены.

Ниже приведен минимально воспроизводимый пример.

############################################################################

 import matplotlib.pyplot as plt  import numpy as np  from matplotlib.widgets import Slider  np.random.seed(1977)  fig, ax = plt.subplots()  axes = [ax, ax.twinx(), ax.twinx()]  fig.subplots_adjust(right=0.75)  axes[-1].spines['right'].set_position(('axes', 1.2))  axes[-1].set_frame_on(True)  axes[-1].patch.set_visible(False)   colors = ('Green', 'Red', 'Blue')  for ax, color in zip(axes, colors):   data = np.random.random(1) * np.random.random(10)   ax.plot(data, marker='o', linestyle='none', color=color)   ax.set_ylabel('%s Thing' % color, color=color)   ax.tick_params(axis='y', colors=color)  axes[0].set_xlabel('X-axis')   YMIN=0  YMAX=1  def update(val):    ax.set_ylim(slider1.val, slider2.val)   slider_position1 = plt.axes([0.9, 0.025, 0.01, 0.35], facecolor = "green")  slider_position2 = plt.axes([0.95, 0.025, 0.01, 0.35], facecolor = "skyblue")   slider1 = Slider(slider_position1,'From', valmin=YMIN, valmax=YMAX, valinit=YMIN,   orientation="vertical", color = "skyblue", valfmt ='%1.1f')   slider2 = Slider(slider_position2,'To', valmin=YMIN, valmax=YMAX, valinit=YMAX,  orientation="vertical", slidermin= slider1, color = "green", valfmt ='%1.1f')   slider1.slidermax = slider2    slider1.on_changed(update)  slider2.on_changed(update)   fig.tight_layout()  plt.show()  

Комментарии:

1. Пожалуйста, проясните вашу конкретную проблему или предоставьте дополнительные сведения, чтобы выделить именно то, что вам нужно. Поскольку это написано в настоящее время, трудно точно сказать, о чем вы просите.