Как редактировать оси графиков, размещённых на Figure?

Рейтинг: 0Ответов: 1Опубликовано: 14.05.2023

Графики размещаются в приложении, интерфейс которого написан на kivy. Структура: родительский макет вертикальный Boxlayout, на нём ещё 2 макета. Сверху макет с кнопками (с ним проблем нет), снизу графики

        layout = BoxLayout(orientation='vertical')
        buttons = FloatLayout(size_hint=(1, .2))
        layout.add_widget(buttons)
        graph_layout = BoxLayout(orientation='vertical', size=(500, 1600))
        layout.add_widget(graph_layout)
        # Макет для графиков ЭЭГ
        self.fig = Figure(figsize=(6, 8),facecolor='grey',layout='tight')
        #self.axes = self.fig.subplots(self.channels, 1) - один из вариантов добавления графиков
        self.canvas = FigureCanvas(self.fig)
        graph_layout.add_widget(self.canvas)
        for i in range(self.channels):
            self.fig.add_subplot(self.channels,1,i+1)

Графики показывает, но со значениями по умолчанию. Как мне настроить максимальные и минимальные значения на оси y, убрать разметку значений на оси x и добавить сетку по y? Может быть есть возможность в качестве subplots добавлять объекты Graph из kivy?

graph = Graph(y_ticks_major=10,
                          y_grid_label=True,
                          x_grid_label=False,
                          padding=5,
                          x_grid=False,
                          y_grid=True,
                          xmin=-0,
                          xmax=100,
                          ymin=-20,
                          ymax=20, font_size=11)

Ответы

▲ 0

Решение нашлось. Понадобилось импортировать matplotlib.pyplot as plt вместо from matplotlib.figure import Figure

self.fig = plt.figure(figsize=(6, 8),facecolor='grey',tight_layout=True) # изменения в создании фигуры
self.canvas = FigureCanvasKivyAgg(self.fig)
graph_layout.add_widget(self.canvas)

for i in range(self.channels):
    ax = self.fig.add_subplot(self.channels,1,i+1)
    # Определение интервала значений по y
    ax.set_ylim([-20, 20])
    # Удаление разметки на оси x
    ax.set_xticklabels([])
    # Добавление сетки на ось y
    ax.yaxis.grid(True)
    # Установка цвета линии на красный
    ax.plot([], [], color='red')