一、为什么要学习 matplotlib
matplotlib 能将数据进行可视化,更直观的呈现,是数据更加客观、更具说服力
二、什么是 matplotlib
matplotlib: 最流行的 python 底层绘图库,主要做可视化图表,名字取材于 MATLAB, 模仿 MATLAB 构建
三、matplotlib 折线图的基本要点
完成 matpotlib 的基本要点
# 导入 matplotlib 库
from matplotlib import pyplot as plt
# 设置横纵坐标,x 和 y 为一一对应关系
x = range(2,26,2)
y = [15,13,14.5,17,20,25,26,26,24,22,18,15]
# 绘制折线图
plt.plot(x,y)
# 设置横纵轴标题
plt.xlabel("时间")
plt.ylabel("温度")
plt.title("时间-温度分布图")
# 展示折线图
plt.show()
就这样,一幅简单的折线图就绘制出来,如下
当然按照上面的步骤执行会发现中文会出现乱码的,因为 matplotlib 默认是英文字体的,所以我们需要修改默认的字体
from matplotlib import font_manager
font = font_manager.FontPorperties(fname="C:\matplotlib\font\msyh.ttf",size="medium")
# fname="这里填字体的路径"
...
plt.xlabel("时间",fontproperties=font) # 引用上面的字体 font
plt.ylabel("温度",fontproperties=font)
plt.title("时间-温度分布图",fontproperties=font)
...
到这里我们就解决了中文乱码的问题了,接着我们还可以为折线图添加更多的使用的功能
(1)设置折线图的大小
figure = plt.figure(figsize=(20,20),dpi=80)
其中 figsize 是设置 宽 * 高,dpi 图像每英寸长度内的像素点数 。
(2)设置横纵轴的刻度的宽度
plt.xticks(range(2,26),rotation=45,fontproperties=font)
其中第一个参数就是设置刻度间隔,使刻度间隔的步长为1
(3)设置网格
plt.grid(alpha=0.4) # alpha 为透明度
(4)设置图列
...
plt.plot(x,y1,label="自己")
plt.plot(x,y2,label="同桌",color="red",linestyle="--",alpha=0.5)
# label 为标签名,color 为折线的颜色, linestyle 为折线的种类
...
plt.legend(prop=font)
...
四、例子
假设大家在 30 岁的时候,根据自己和同桌的实际情况统计出来了从 11 岁到 30 岁每年交女(男)朋友
的数量如列表 a , b 。请绘制出该数据的折线图,以便分析自己每年交女(男)朋友的数量走势
a = [1,0,1,1,2,4,3,2,3,4,4,5,6,5,4,3,3,1,1,1]
b = [1,3,1,5,2,4,1,1,2,3,1,3,1,2,4,3,3,1,1,1]
要求:
Y 轴表示个数
X 轴表示岁数,比如 11 岁,12 岁等
代码如下:
from matplotlib import pyplot as plt
from matplotlib import font_manager
# figure = plt.figure(figsize=(20,8),dpi=80)
font = font_manager.FontProperties(fname="C:\Django项目\数据分析\matplotlib\FangZhengShouJinShuJianTi-1.ttf",size="large")
x = ["{}岁".format(i) for i in range(11,31)]
y1 = [1,0,1,1,2,4,3,2,3,4,4,5,6,5,4,3,3,1,1,1]
y2 = [1,3,1,5,2,4,1,1,2,3,1,3,1,2,4,3,3,1,1,1]
plt.plot(x,y1,label="自己")
plt.plot(x,y2,label="同桌",color="red",linestyle="--",alpha=0.5)
plt.xticks(rotation=45,fontproperties=font) # rotation x轴标志的方向
# 绘制网格
# plt.grid(alpha=0.4) # alpha 透明度
# 添加图例
plt.legend(prop=font)
plt.xlabel("岁数",fontproperties=font)
plt.ylabel("个数",fontproperties=font)
plt.title("随年龄增长交往女(男)朋友的数据统计",fontproperties=font)
plt.show()
折线图如下: