Создание сюжетных участков с использованием цикла for - PullRequest
0 голосов
/ 06 марта 2020

У меня есть большое количество CSV-файлов, и мне нужно взять их подмножество (в данном случае 9) и построить данные с помощью Plotly. Я написал следующее для l oop, который читает каждый файл, создает фрейм данных и затем строит графики. Тем не менее, я ломаю голову над тем, как автоматизировать добавление каждого графика в каждую строку и столбец подпрограммы. т. е. первый график находится в строке 1, столбец 1/4-й - в строке 2, столбец 1, 8-й участок - в строке 3, столбце 2 и т. д. c. Любые идеи о том, как этого добиться. Последняя строка должна быть изменена (row = idx,col = idx)

os.chdir('D:\GEE\Datasets')
dirlist = os.listdir()

no_of_items = 9
Fig = make_subplots(rows = 3, cols = 3)
for idx,fname in enumerate(dirlist[0:9]):
    Df = pd.read_csv(fname)
    try:
        Df['ts'] = pd.to_datetime(Df['ts'],format = '%d/%m/%Y') 
    except:
        Df['ts'] = pd.to_datetime(Df['ts'],format = '%Y/%m/%d')
    Fig.add_trace(
        go.Scatter(
            x = Df['ts'],
            y = Df['fitted.values'],
            mode = 'lines'
        ),

    row = idx,col = idx

    )

1 Ответ

1 голос
/ 06 марта 2020

Во-первых, меня беспокоит, что 0: 9 - это 10 цифр, а не 9. Однако, если вы используете 0: 8, это будет работать

import math 
row = idx%3 + 1
col = math.floor(idx/3) + 1

Если вы используете 1: 9, просто удалите " плюс 1 "s

Или это, если вы предпочитаете не импортировать математику

row = idx%3 + 1
col = int(str((idx/3) + 1)[0])

Мне интересно, как эксперты делают это, поскольку я уверен, что есть что-то более элегантное

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...