如何使用matplotlib调整数字的比例?

时间:2019-01-14 17:00:07

标签: python matplotlib

我有从一组正则表达式中提取的字典列表。我正在使用相同的函数并仅循环正则表达式的名称来绘制每个字典的结果:

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 :(得分:1)

我想您希望每个图形都使用相同的y比例尺。只需在代码中添加plt.ylim((0,ulim))行即可(例如,在设置轴标签和标题的位置附近)。在此ulim是您要将y上限设置为的特定数字。

关于您的观察,数据(以及由matplotlib自动设置的y限制)似乎在每次执行时都会发生变化:正在读取的日志文件是否有可能被某个日志记录过程不断写入,因此您从文件中读取的数据实际上随时都在变化吗?