xlsxwriter: Как создать «цветовую шкалу» в столбце с объединенными строками? - PullRequest
0 голосов
/ 25 февраля 2019

введите описание изображения здесь

(я обычно просто читаю по-английски, извините за неправильное написание)

Я хочу, чтобы column C был нарисован как column A с объединением двух строк одного цвета.Как я слил и форматировал column A:

def mergeRows(worksheet, first_row, col, how_many, rows_to_merge=2, value=None, format=None):
if type(value) in (int, str) or value is None:
    [worksheet.merge_range(row, col, row + rows_to_merge - 1, col, value, format)
     for row in range(first_row, ((how_many * rows_to_merge) + first_row), rows_to_merge)]
else:
    [worksheet.merge_range(row, col, row + rows_to_merge - 1, col, value[i], format)
    for i, row in enumerate(range(first_row, ((how_many * rows_to_merge) + first_row), rows_to_merge))]

row = 4
mergeRows(worksheet, first_row=row+1, col=0, how_many=d['n_sensors'], value=list(range(d['n_sensors'])), format=formats['sensor'])
mergeRows(worksheet, first_row=row+1, col=1, how_many=d['n_sensors'], format=formats['column'])
mergeRows(worksheet, first_row=row+1, col=2, how_many=d['n_sensors'], format=formats['column'])

worksheet.conditional_format(row + 1, 0, row + 1 + d['n_sensors'] * 2, 0, {'type': 'formula',
                                                                       'criteria': '=MOD(ROW(),4) = 0',
                                                                       # format if the row number % 4 == 0.
                                                                       'format': formats['sensor_blue']})

Но я не уверен, как сделать это с color scale, потому что те же критерии, что и в column A, не работают для color scaleв column C:

worksheet.conditional_format(row+1, 2, row +1 +(d['n_sensors']*2), 2, {'type': '3_color_scale',
                                                                     'min_color': 'green',
                                                                     'mid_color': 'yellow',
                                                                     'max_color': 'red',
                                                                     'criteria': '=MOD(ROW(),4) = 0'})

код:

    for sensor, samples in enumerate(x_test):

        ############################### Classifica e preenche os valores de cada sensor ###############################
        y = model.predict(samples)
        n_outliers = 0
        if samples.shape[1] == 2:
            for group in range(0, len(y)):
                if y[group] == 1:
                    worksheet.write(row + 1 + sensor*2, group + 5, samples[group][0],  formats['pp_approved'])
                    worksheet.write(row + 2 + sensor*2, group + 5, samples[group][1],  formats['std_approved'])
                else:
                    n_outliers += 1
                    worksheet.write(row + 1 + sensor*2, group + 5, samples[group][0], formats['pp_reproved'])
                    worksheet.write(row + 2 + sensor*2, group + 5, samples[group][1], formats['std_reproved'])

                worksheet.write_comment(row + 1 + sensor*2, group + 5,
                                    "         CANAL {}\n\n{}\n\n{}".format(sensor,
                                                                        convertTime(groups_time[0, group], timezone.utc).strftime("%Y.%m.%d %H:%M:%S.%f")[:-3],
                                                                        convertTime(groups_time[1, group], timezone.utc).strftime("%Y.%m.%d %H:%M:%S.%f")[:-3]))
                                                                                            #TODO Corrigir o tempo.

        ############################################## Coluna de Alerta ##############################################
        if n_outliers < args.alert:
            n_approv += 1

        worksheet.write(row + 1 + sensor*2, 2, n_outliers)

    worksheet.conditional_format(row+1, 2, row +1 +(d['n_sensors']*2), 2, {'type': '3_color_scale',
                                                                     'min_color': 'green',
                                                                     'mid_color': 'yellow',
                                                                     'max_color': 'red',
                                                                     'criteria': '=MOD(ROW(),4) = 0'})
...