@arefeva_au
Программист Python

Python matplotlib как синхронно изменять масштаб на разных графиках одной фигуры?

Здравствуйте, недавно использую библиотеку matplotlib. Возникла необходимость анализировать графические данные. Есть несколько разных данных по оси У, а по оси Х данные идентичны на 100%. С разных приборов собираются одновременно данные. Потом анализируются. И для удобства анализа необходимо растягивать график (увеличивать масштаб) некоторого участка по оси Х, одновременно(синхронно) на двух и более графиках, а именно растягивать этот же участок по оси Х на других графиках автоматически. Как можно реализовать или может быть есть какие-то другие инструменты чтобы сделать подобное?

Python 3.4.4, matplotlib 2.2.2

5bda92bd1ea64947894307.png
Графики вот такого вида их надо одновременно увеличивать

кусок кода где я строю графики, но здесь ничего не обычного.

self.angle = []  # угол наклона рамы
        self.angle_r = []  # угол наклона ролика
        self.pressure = []  # задаваемое давление
        self.c_pressure = []  # текущее давление
        self.c_pressure0 = []
        self.speed_rolika = []  # текущая скорость ролика
        self.nn1 = []

# Пропускаю код обработки получиченных значений
# массивы данных пипа float

# строим выбранные графики
        k = 0
        fig = plt.figure()
        fig.add_subplot(111)
        if self.ui.checkBox.isChecked():
            k += 1
            subplot(int(str(n) + str(1) + str(k)))
            plot(self.angle, self.pressure)
            plot(self.angle, self.c_pressure0)
        if self.ui.checkBox_2.isChecked():
            k += 1
            fig.tight_layout()
            subplot(int(str(n) + str(1) + str(k)))
            plot(self.angle, self.pressure)
            plot(self.angle, self.c_pressure)
        if self.ui.checkBox_3.isChecked():
            k += 1
            subplot(int(str(n) + str(1) + str(k)))
            plot(self.angle1, self.pressure1)
            plot(self.angle1, self.c_pressure_correct1)
        if self.ui.checkBox_4.isChecked():
            k += 1
            subplot(int(str(n) + str(1) + str(k)))
            plot(self.angle, self.speed_rolika)
        if self.ui.checkBox_5.isChecked():
            k += 1
            subplot(int(str(n) + str(1) + str(k)))
            plot(self.angle, self.nn1)
        plt.show()
  • Вопрос задан
  • 1748 просмотров
Решения вопроса 1
@Andy_U
У функции subplots есть ключевые параметры ```sharex``` и ```sharey```. Ну, там можно ```all``` задать в качестве значения, чтобы масштаб/сдвиг по всей решетке синхронизовался, или ```col`` и ```row```, чтобы только по текущей колонке или столбцу. Ну, типа так для склееных по вертикали двух графиках.
fig, (ax1, ax2) = plt.subplots(2, 1, sharex='all', figsize=(640/my_dpi, 2*480/my_dpi), dpi=my_dpi)
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы