matplotlib画折线图

    def convert(self, pose_list, output):
        data_list = self.parse_pose(pose_list)
        time_z_dic = {}
        font2 = {'family': 'Times New Roman',
                 'weight': 'normal',
                 "color": "green",
                 'size': 6,
                 }
        for index in range(len(data_list)):
            z = data_list[index]["coordinate"][-1]
            time_stamp = data_list[index]["timestamp"].split(".")[0] + "." + data_list[index]["timestamp"].split(".")[-1][:3]
            time_z_dic[time_stamp] = z
            plt.text(time_stamp, z, z, fontdict=font2)
        x_list = time_z_dic.keys()
        y_list = time_z_dic.values()

        mpl.rcParams['font.sans-serif'] = ['STZhongsong']  # 指定默认字体:解决plot不能显示中文问题
        mpl.rcParams['axes.unicode_minus'] = False

        plt.plot(x_list, y_list, color="red", label="z值")
        plt.title("z值折线图", loc="center")
        plt.grid(True)  # 显示网格线
        plt.xlabel('time_stamp')

        plt.xticks(rotation=45)
        plt.ylabel('z')  # 显示纵坐标标题
        plt.legend(loc=2)  # 显示图例

        # change x internal size
        plt.gca().margins(x=0)
        plt.gcf().canvas.draw()

        # set size
        maxsize = 30
        m = 0.2
        N = len(x_list)
        s = maxsize / plt.gcf().dpi * N + 2 * m
        margin = m / plt.gcf().get_size_inches()[0]

        plt.gcf().subplots_adjust(left=margin, right=1. - margin)
        plt.gcf().set_size_inches(s, plt.gcf().get_size_inches()[1])

        # plt.show()
        plt.savefig(str(output), dpi=600, bbox_inches='tight')
        plt.close()
posted @ 2022-09-08 18:22  不能说的秘密  阅读(21)  评论(0编辑  收藏  举报