#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. Пожалуйста, проясните вашу конкретную проблему или предоставьте дополнительные сведения, чтобы выделить именно то, что вам нужно. Поскольку это написано в настоящее время, трудно точно сказать, о чем вы просите.