Разделите сюжеты на несколько экранов

Я хочу построить некоторые данные из CSV-файла, используя dataframe.

Мой код в настоящее время отображает 266 = 14 * 19 отдельных участков. В настоящее время он закодирован так, чтобы отображать все 266 подзаговоров на одном экране, и каждый из них маленький и трудный для чтения.

Я пытался использовать сюжет 1x1

#fig, cx=plt.subplots(1,1, sharex=False, sharey=False, figsize=(18,12))

Основной код:

fig, cx=plt.subplots(14,19, sharex=False, sharey=False, figsize=(18,12))
#fig, cx=plt.subplots(1,1, sharex=False, sharey=False, figsize=(18,12))

plt.subplots_adjust(hspace=0.5)

cx = cx.ravel()

for i in range(0,len(Bond)):
    cx[i].plot(VelLog[Bond[i]], color='b')
    cx[i].set_xlabel('Time (ms)')
    cx[i].set_ylabel('Velocity (m/s)')
    cx[i].set_ylim(-250,150)
    cx[i].set_title(Bond[i])

plt.savefig('Velocity.png', dpi=120)
plt.show()
##################################
Error message when I un-comment Line 1
cx[i].plot(VelLog[Bond[i]], color='b')
IndexError: index 209 is out of bounds for axis 0 with size 209

Как я могу отображать на экране только несколько подзаголовков, чтобы повысить читабельность?

Как 5х5 + 5х5 + 5х5 + 5х5 + 5х5, + 5х5 + 5х5 + 5х5 + 5х5 + 5х5 + 4х4 = 266

11 разных экранов.

Есть ли способ добавить фильтр диаграммы в качестве альтернативы?

Вот мой обновленный код с вашими предложениями. Теперь он создает 11 фигур. Мне удалось построить все 266 графиков, но все они выглядят одинаково.

Nrows, Ncols = 14, 19
Nplots = Nrows*Ncols

nrows, ncols = 5, 5
naxes = nrows*ncols

nfigures = Nplots//naxes

count = 0
figures = []

for fignum in range(nfigures+1):
    fig, axes = plt.subplots(nrows, ncols,  sharex=False, sharey=False, figsize=(18,12))
    plt.subplots_adjust(hspace=0.5)
    #axes = axes.ravel()
    figures.append(fig)
    axes = axes.flat
    for ax in axes:
        #print(count)
        if count<Nplots:
            for i in range(0,len(Bond)):
                cvs_row, cvs_col = divmod(count, Ncols)
                cvs_row, cvs_col = cvs_row+1, cvs_col+1
                ax.plot(VelLog[Bond[i]], color='b', label='%d,%d'%(cvs_row, cvs_col))
                ax.set_xlabel('Time (ms)')
                ax.set_ylabel('Velocity (m/s)')
                ax.set_ylim(-250,150)
                ax.set_title(Bond[i])
            count = count+1

plt.savefig('Velocity.png', dpi=120)
plt.show()

Вот результат для одной фигуры введите описание изображения здесь

Вы пытались нанести их на разные объекты фигуры?

zero 31.05.2019 06:58
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
1
38
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Здесь я рисую одну и ту же функцию 14 * 19 раз, но вы можете получить представление

У нас есть две проблемы: отслеживать то, что мы замышляем, и откладывая фактическое построение графика, пока мы не закончим со всеми из них.

Первая проблема решается здесь с использованием глобального счетчика и divmod встроенный, второй хранит все цифры в списке и вызывает plt.show() только в самом конце этапа прорисовки.

Чтобы показать, что я имею в виду под «отслеживанием», я добавил метку и легенда к каждому отдельному сюжету.

Чтобы все было разумно, я не проверяю, пуста ли последняя цифра. а также я не проверяю, пусты ли некоторые участки последних цифр, но помните, что вы можете удалить некоторые подсюжеты из рисунка, если вы хочу чистую последнюю цифру.

import matplotlib.pyplot as plt
import numpy as np

x = np.linspace(0, np.pi, 31)
y = np.sin(x)

Nrows, Ncols = 14, 19
Nplots = Nrows*Ncols

nrows, ncols = 5, 5
naxes = nrows*ncols

nfigures = Nplots//naxes

count = 0
figures = []

for fignum in range(nfigures+1):
    fig, axes = plt.subplots(nrows, ncols)
    figures.append(fig)
    axes = axes.flat
    for ax in axes:
        print(count)
        if count<Nplots:
            cvs_row, cvs_col = divmod(count, Ncols)
            cvs_row, cvs_col = cvs_row+1, cvs_col+1
            ax.plot(x, y, label='%d,%d'%(cvs_row, cvs_col))
            ax.legend()
            count = count+1

plt.show()

Здесь я показываю только последний рисунок, чтобы показать, что я имею в виду под «пустым подсюжеты"...

Почему все графики выглядят одинаково?

defjamvan 31.05.2019 18:17

¿ Вы прочитали первое утверждение моего ответа, то есть «Здесь я рисую функцию такой же 14 × 19 раз, но вы можете получить представление»?

gboffi 31.05.2019 18:42

Перефразируя, я полагал, что добавление Vel[Bond[i]] построит все 266 графиков.

defjamvan 31.05.2019 19:03

Догадаться. У меня было «i» вместо «count». Спасибо еще раз.

defjamvan 31.05.2019 19:36

Другие вопросы по теме