使用matplotlib画折线图
下面的是使用Python,matplotlib包画折线图的例子,里面有包含子图,坐标轴调整,标签位置调整在内的所有样例,以及注释,以供大家参看.
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
from matplotlib.ticker import MultipleLocator
df_loss_arm = pd.read_csv("./result/loss_arm.csv", header=None)
df_loss_arm = df_loss_arm.reset_index()
df_loss_arm = df_loss_arm.rename(columns={"index": "epoch", 0: "loss"})
df_acc_arm = pd.read_csv("./result/acc_arm.csv", header=None)
df_acc_arm = df_acc_arm.reset_index()
df_acc_arm = df_acc_arm.rename(columns={"index": "epoch", 0: "accuracy"})
df_result_arm = pd.merge(df_loss_arm, df_acc_arm, "inner", "epoch")
"""
epoch loss accuracy
0 0 1.598689 0.100060
1 1 1.022335 0.229167
2 2 0.745279 0.225962
3 3 0.771946 0.404247
4 4 0.627058 0.567007
"""
df_loss_x86 = pd.read_csv("./result/loss_x86.csv", header=None)
df_loss_x86 = df_loss_x86.reset_index()
df_loss_x86 = df_loss_x86.rename(columns={"index": "epoch", 0: "loss"})
df_acc_x86 = pd.read_csv("./result/acc_x86.csv", header=None)
df_acc_x86 = df_acc_x86.reset_index()
df_acc_x86 = df_acc_x86.rename(columns={"index": "epoch", 0: "accuracy"})
df_result_x86 = pd.merge(df_loss_x86, df_acc_x86, "inner", "epoch")
# 统一定义两幅图标题的字体样式
title_font = {'weight': 'bold', 'style': 'normal', 'size': 16}
# 定义子图,2行1列
fig, axs = plt.subplots(nrows=2, ncols=1, figsize=(9, 12), dpi=300)
# 设置图一的参数
axs[0].set_title("ResNet Training Loss Curve", color="b", font=title_font)
axs[0].plot(df_result_arm["epoch"], df_result_arm["loss"], "r", label="Ascend910")
axs[0].plot(df_result_x86["epoch"], df_result_x86["loss"], "g", label="Tesla V100")
# 设置x轴的范围0-100
axs[0].set_xlim(0, 100)
# 调整x轴的刻度
# axs[0].set_xticks(np.linspace(0, 100, 11))
# 设置单位刻度为5
x_major_locator = MultipleLocator(5)
axs[0].xaxis.set_major_locator(x_major_locator)
axs[0].set_ylim(0., 2.)
axs[0].set_yticks(np.linspace(0, 2, 9))
axs[0].set_xlabel("Epoch")
axs[0].set_ylabel("Loss")
# 设置曲线说明标签的放置位置为右上角
axs[0].legend(loc="upper left")
# 设置网格机器样式
axs[0].grid(True, linestyle='--', alpha=0.5)
axs[1].set_title("ResNet Training Accuracy Curve", color="b", font=title_font)
axs[1].plot(df_result_arm["epoch"], df_result_arm["accuracy"], "r", label="Ascend910")
axs[1].plot(df_result_x86["epoch"], df_result_x86["accuracy"], "g", label="Tesla V100")
axs[1].set_xlim(0, 100)
# axs[1].set_xticks(np.linspace(0, 100, 11))
x_major_locator = MultipleLocator(5)
axs[1].xaxis.set_major_locator(x_major_locator)
axs[1].set_ylim(0, 1)
axs[1].set_yticks(np.linspace(0, 1, 11))
axs[1].set_xlabel("Accuracy")
axs[1].set_ylabel("Loss")
axs[1].legend(loc="upper left")
axs[1].grid(True, linestyle='--', alpha=0.5)
plt.show()
最后是输出的效果.