Как настроить масштаб рисунков с помощью matplotlib? - PullRequest
0 голосов
/ 14 января 2019

У меня есть список словарей, которые я извлекаю из набора регулярных выражений. Я строю результаты для каждого словаря, используя одну и ту же функцию и зацикливая только имя регулярного выражения:

def plot_Node_Own_Synchronization_signals_List(Log_File):
    for regular_expression_key in Node_Own_Synchronization.keys():
        #file = open('/home/data/Signal_Synchronization_Statistics/' + str(regular_expression_key) + '.txt', 'w')
        print('regular_expression_key=  ' + str(regular_expression_key))
        #file.write('regular_expression_key=  ' + str(regular_expression_key) + '\n')
        re_value = Node_Own_Synchronization[regular_expression_key]
        print('re_value=  ' + str(re_value))
        #file.write('re_value=  ' + str(re_value) + '\n')
        dict_node_info = loadInfoFrom_Node_Own_Synchronization_signals_List(Log_File, re_value)
        print('dict_node_info=  ' + str(dict_node_info))
        #file.write('dict_node_info=  ' + str(dict_node_info) + '\n')
        #file.close()

        if (bool(dict_node_info) == False):
            print('I am empty')
        else:
            f = plt.figure(1)
            legend = []
            for mac, dico_data in dict_node_info.items():
                legend.append(mac)
                plt.plot(dico_data['timestamp'], dico_data['Counter'])

            plt.xlabel('Time (s)')
            plt.ylabel(regular_expression_key)
            plt.title('signal_synchronization_variation:' + str(regular_expression_key))
            legend_x = 1
            legend_y = 0.5
            legend = plt.legend(legend, loc='center left', bbox_to_anchor=(legend_x, legend_y), prop={'size': 6})
            for legend_handle in legend.legendHandles:
                legend_handle._legmarker.set_markersize(9)
            plt.grid(True)
            f.savefig("/home/data/Signal_Synchronization_Traces/Own_Synchronization_signal_" + str(regular_expression_key) + "-" + str(date.today()) + ".png", bbox_inches='tight')

Проблема в том, что с каждым новым исполнением у меня разный масштаб для моей фигуры. Иногда разные кривые появляются для одного и того же набора данных.

enter image description here

enter image description here

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

1 Ответ

0 голосов
/ 14 января 2019

Полагаю, вам нужна одинаковая шкала y для каждой фигуры. Просто добавьте строку plt.ylim((0,ulim)) к своему коду (например, где-то, где вы устанавливаете метки оси и заголовок). ulim - это конкретный номер, который вы хотите установить для верхнего предела y.

Что касается вашего наблюдения, что данные (и, следовательно, пределы y, автоматически устанавливаемые matplotlib), похоже, меняются при каждом выполнении: возможно ли, что файл журнала, из которого вы читаете, постоянно записывается каким-либо процессом регистрации, так что данные, которые вы читаете из файла, на самом деле каждый раз отличаются?

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