一、为什么要学习 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 ---折线图

当然按照上面的步骤执行会发现中文会出现乱码的,因为 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()

折线图如下:

MatPlotlib ---折线图

相关文章: