PYthon中的matplotlib将简单地为论文实验中需要的loss图和其他实验结果图提供可视化和分析工具。因此,本文目的为简单地学会读取数据、画图、简单美化实验图。以提供案例为核心内容。主要参考黑马程序员的视频: https://www.bilibili.com/video/BV1hx411d7jb?p=9&spm_id_from=pageDriver
基础操作
保存
from matplotlib import pyplot as plt
import numpy as np
x = range(2,26,2)
y = [15,13,14.5,17,20,25,26,26,27,22,18,15]
# 设置图片大小
plt.figure(figsize=(20,8),dpi=80)
# 绘图
plt.plot(x,y)
# 保存
plt.savefig("./t1.png")
刻度
# 设置x轴的刻度
plt.figure(figsize=(20,8),dpi=80)
plt.plot(x,y)
plt.xticks(x)
# plt.xticks(range(4,25,1))
# 想要密集一些,传列表
_xtick_labels = [i/2 for i in range(2,49)]
plt.xticks(_xtick_labels[::3])
# max_y取不到
plt.yticks(range(min(y),max(y)+1))
plt.show()
练习1:设置中文显示、设置轴步长和描述
# 练习1:设置中文显示、设置轴步长和描述
# 相关链接:https://blog.csdn.net/lw_power/article/details/82994762
from matplotlib import pyplot as plt
import random
import matplotlib
# 方法二
from matplotlib import font_manager
my_font = font_manager.FontProperties(fname='C:/Windows/Fonts/AdobeFangsongStd-Regular.otf', size=16)
# 方法一__用不了,提示large不能转换为float
# Windows和Linux设置字体的方式
# font = {'family' : 'MicroSoft YaHei',
# 'weight' : 'bold',
# 'size' : 'large'}
# matplotlib.rc("font", **font)
# matplotlib.rc("font", family='MicroSoft YaHei', weight="blod")
# 要显示的数据和对应label
x = range(0, 120)
y = [random.randint(20,35) for i in range(120)]
# 扩大图像画板的像素值
plt.figure(figsize=(20,8),dpi=80)
# 加入画板
plt.plot(x,y)
# 调整x轴的刻度
_xtick_labels = ["10点{}分".format(i) for i in range(60)]
_xtick_labels += ["11点{}分".format(i) for i in range(60)]
# 取步长,数字和字符串一一对应,数据的长度一样
# rotation旋转角度
plt.xticks(x[::4], _xtick_labels[::4], rotation=45)
plt.xticks(x[::4], _xtick_labels[::4], rotation=45,fontproperties=my_font)
# 添加描述信息
plt.xlabel("时间",fontproperties=my_font)
plt.ylabel("温度 单位(℃)",fontproperties=my_font)
plt.xlabel("10点到12点每4分钟的气温变化情况",fontproperties=my_font)
plt.show()
练习2:绘制网格
# 练习2:绘制网格
from matplotlib import pyplot as plt
import random
import matplotlib
from matplotlib import font_manager
my_font = font_manager.FontProperties(fname='C:/Windows/Fonts/AdobeFangsongStd-Regular.otf', size=16)
a = [1,0,1,1,2,4,3,2,3,4,4,5,6,5,4,3,3,1,1,1]
b = [1,0,3,1,2,2,3,3,2,1 ,2,1,1,1,1,1,1,1,1,1]
y_1 = a
x = range(11,31)
# 设置图形大小
plt.figure(figsize=(20,8),dpi=80)
# 添加进图
plt.plot(x,y_1)
# 设置x轴刻度
_xtick_labels = ["{}岁".format(i) for i in x]
plt.xticks(x, _xtick_labels, fontproperties=my_font)
plt.yticks(range(0,9))
# 绘制网格
# 调整刻度稀疏度可以通过调整x,y轴数量
# alpha透明度0~1
plt.grid(alpha=0.4)
# 展示
plt.show()
练习3:多线,图例
# 练习3:多线,图例
# 想要复杂的图形可以去官方demo查看
from matplotlib import pyplot as plt
import random
import matplotlib
from matplotlib import font_manager
my_font = font_manager.FontProperties(fname='C:/Windows/Fonts/AdobeFangsongStd-Regular.otf', size=16)
a = [1,0,1,1,2,4,3,2,3,4,4,5,6,5,4,3,3,1,1,1]
b = [1,0,3,1,2,2,3,3,2,1 ,2,1,1,1,1,1,1,1,1,1]
y_1 = a
y_2 = b
x = range(11,31)
# 设置图形分辨率大小
plt.figure(figsize=(20,8),dpi=80)
# 添加进图
# 可以进入函数查看接口输入数据
plt.plot(x,y_1,label="自己",color="orange",linestyle=':')
plt.plot(x,y_2,label="同桌",color="cyan",linestyle='-')
# 设置x轴刻度
_xtick_labels = ["{}岁".format(i) for i in x]
plt.xticks(x, _xtick_labels, fontproperties=my_font)
# plt.yticks(range(0,9))
# 绘制网格
plt.grid(alpha=0.4)
# 添加图例
plt.legend(prop=my_font,loc="upper right")
# 展示
plt.show()
'''
# 小结:
绘制了折线图(plt.plot)
设置了图片的大小和分辨率(plt.figure)
实现了图片的保存(plt.savefig)
设置了xy轴上的刻度和字符串(xticks)
解决了刻度稀疏和密集的问题(xticks)
设置了标题,xy轴的lable(title,xlable,ylable)
设置了字体(font_manager. fontProperties,matplotlib.rc)
在一个图上绘制多个图形(plt多次plot即可)
为不同的图形添加图例
'''
小结导图