Как сделать автомасштабирование пространства для графика (в реальном времени) по y оси (несколько осей y)
Добрый день! У меня на данный момент график, который работает в реальном времени. И когда добавляются данные у меня соответственно меняется максимум и минимум у оси у(у каждого разный). Теперь как можно сделать так чтобы при достижений определенного значения у масштаб определенного пространства для графика увеличивался, а остальные соответственно уменьшались. Заранее спасибо!
import matplotlib.pyplot as plt
import pandas as pd
from matplotlib.animation import FuncAnimation
import os
from pathlib import Path
import numpy as np
fig = plt.figure(figsize=(17, 9), dpi=100)
gs = fig.add_gridspec(7, hspace=0)
axs = gs.subplots(sharex=False, sharey=False)
def animation(i):
data = pd.read_csv('FlyData.txt', sep='\s+', encoding='latin-1', header=None)
data = pd.DataFrame(data)
x = data[0]
colors = ['#FFD700', 'g', 'b', 'r', 'purple', 'c', 'm', 'y', 'k', 'c', '#FF4500', '#2F4F4F', '#FF69B4', '#556B2F', '#20B2AA', '#BDB76B', '#FFD700', '#DB7093', '#7FFF00', '#4B0082']
for i in range(0, 7):
y = data[i+1]
ymax = max(y)
ymin = min(y)
stepx = max(x)/10
axs[i].label_outer()
axs[i].set_ylim([ymin*1.1, ymax*1.1])
axs[i].set_xticks(np.arange(0, max(x)+1, stepx))
axs[i].spines['right'].set_visible(False)
axs[i].spines['top'].set_visible(False)
axs[i].plot(x, y, colors[i])
if ymax>100:
axs[i].set_yticks(np.arange(ymin, ymax, 50))
elif ymax<100 and ymax>15:
axs[i].set_yticks(np.arange(ymin, ymax, 20))
elif ymax<15 and ymax>1:
axs[i].set_yticks(np.arange(ymin, ymax, 2))
else:
axs[i].set_yticks(np.arange(ymin, ymax, 0.20))
plt.xlabel('Время')
plt.ylabel('Данные вертолета')
ani = FuncAnimation(fig, animation, interval=300)
plt.show()
