matplotlib是python的一个强大的绘图工具,能将数据可视化,更直观的呈现数据。
matplotlib的功能繁多,在此只介绍其基本功能。
导入
import matplotlib.pyplot as plt
from matplotlib import font_manager
折线图
import random
x = range(100)
y = [random.random() for i in x]
plt.plot(x, y) # x,y一一对应、长度相同
plt.show()
plt.plot(x) # 当只传入一组数据时,会以传入数据为y轴,以传入数据的索引数组为x轴数据
plt.show()
font = font_manager.FontProperties(fname='示例文件路径') # 设置一个字体
plt.plot(x, y, label='示例图线', linewidth=3, linestyle='-.')
# linestyle,设置线条风格,(实线,'-')(点划线,'-.') (虚线,'--')(点虚线,':') (无线条,'')
# linewidth, 设置线条粗细
# alpha, 线条透明度
plt.legend(prop=font, loc='upper right') # 显示图例
plt.show()
散点图
plt.scatter(x, y)
plt.show()
plt.scatter(x, y, color='cyan') # 每个绘图函数都有color属性
plt.show()
条形图
y2 = [random.randint(1,10)for i in x]
plt.bar(x, y2)
plt.show()
# plt.bar(x, height, width=0.8, bottom=0)
# 传入的x表示每一个长条的位置,y2表示表示高度,width默认为0.8,bottom表示y轴的起始刻度
plt.bar(x, y2, width=0.5, bottom=5)
plt.show()
可以发现,y2中的数据只表示条的高度,并不代表坐标。
plt.barh(x,y2) # 绘制横形条形图
plt.show()
直方图
y3 = [random.randint(1, 100) for i in range(10000)]
plt.hist(y3, 10)
# plt.hist(x, bins, rwidth=None, density=False)
# x为数据样本
# bins作为数据区间划分的依据,可为int,sequence
# 当bins为整数时,表示划分的区间数量,自动等分
# 当bins为一sequence时,sequence中每相邻的两个数作为区间
# 当为density传入True时,绘制频率分布直方图,否则为频数分布直方图
# rwidth为柱子之间的距离
轴与标签
plt.plot(x, x)
plt.xlabel('x轴', size=30, fontproperties=font) # 设置x轴标签
plt.ylabel('y轴', size=30, fontproperties=font) # 设置y轴标签
plt.title('示例图表', size=50, fontproperties=font) #设置图表标题
plt.xticks(range(0, 101, 10), [f'{i}分' for i in range(0, 101, 10)],rotation=-45, fontproperties=font)
# plt.xticks(数组,名称数据, rotation= ) x轴刻度设置
# 数值数据决定刻度的位置,名称数据决定刻度处的文字,名称与数值一一对应, rotation参数为文字逆时针旋转的度数
plt.show()
网格线
plt.grid()
# 参数有linewidth,linestyle,alpha等线参数
plt.show()
plt.show():Display all open figures.
会展示上个show之后的所有被定义的图形
y1 = [ 2*i for i in x]
y2 = x
plt.plot(x, y1)
plt.plot(x, y2)
plt.grid()
plt.show()
matplotlib的功能远远不止上述所说的内容,更多功能可以参见官方文档。