Python Matplotlib基本用法详解

文章目录

  • 一、什么是Matplotlib?
  • 二、为什么学习Matplotlib
  • 三、实现一个简单的Matplotlib画图——以折线图为例
  • 3.1 matplotlib.pyplot模块
  • 3.2 图形绘制流程
  • 3.3 折线图绘制与显示
  • 四、基本绘图功能——以折线图为例
  • 1. 完善原始折线图——给图形添加辅助功能
  • 1.1准备数据并画出初始折线图
  • 1.2添加自定义x,y刻度
  • 1.3添加网格显示
  • 1.4添加描述信息
  • 1.5图像保存
  • 2. 在一个坐标系中绘制多个图像
  • 2.1 多次plot
  • 2.2 设置图形风格
  • 2.3 添加图例
  • 3.多个坐标系显示——plt.subplots(面向对象的画图方法)
  • 五、折线图的应用场景

  • 一、什么是Matplotlib?

  • 是专门用于开发2D图表(包括3D图表)
  • 以渐进、交互的方式实现数据可视化
  • 二、为什么学习Matplotlib

    可视化实在整个数据挖掘的关键辅助工具,可以清晰发理解数据,从而调整我们的分析方法。

  • 能将数据进行可视化、更直观的呈现
  • 使数据更客观、更具说服力
    例如下面的图中为数字展示和图形展示:
  • 三、实现一个简单的Matplotlib画图——以折线图为例

    3.1 matplotlib.pyplot模块

    matplotlib.pyplot包含一系列类似于matlab的画图函数

    import matplotlib.pyplot as plt
    

    3.2 图形绘制流程

  • 1.创建画布–plt.fingure()
  • plt.figure(figsize=(),dpi=)
       #figsize:指定图的长宽
       #dpi:图像的清晰度  返回fig对象
    
  • 2.绘制图像–plt.plot(x,y)
    以折线图为例
  • 3.显示图像–plt.show()
  • 3.3 折线图绘制与显示

    举例:展示一周的天气

    import matplotlib.pyplot as plt
    #创建画布
    plt.figure(figsize=(10,10),dpi=100)
    
    #绘制图像
    plt.plot([1,2,3,4,5,6,7],[17,17,18,15,11,11,13])
    
    #显示图像
    plt.show()
    

    结果:

    四、基本绘图功能——以折线图为例

  • 基本绘图需要掌握的内容:
  • 掌握给图形添加辅助功能(如:标注、x,y轴名称,标题等)
  • 知道的图形的保存
  • 知道如何多次plot绘制图像
  • 知道如何多个坐标系显示图形
  • 知道折线图的应用场景
  • 1. 完善原始折线图——给图形添加辅助功能

    需求:画出某城市11点到12点1个小时每分钟的温度变化折线图,温度范围在15度~18度

    1.1准备数据并画出初始折线图

    import matplotlib.pyplot as plt
    import random
    
    #准备x,y轴坐标的数据
    x=range(60)
    y_shanghai=[random.uniform(15,18) for i in x]
    
    plt.figure(figsize=(20,8),dpi=100)
    
    plt.plot(x,y_shanghai)
    
    plt.show()
    

    1.2添加自定义x,y刻度

  • plt.xticks(x,**kwargs)
    x:要显示的刻度值

  • plt.yticks(y,**kwargs)
    y:要显示的刻度值

  • 代码:

    import matplotlib.pyplot as plt
    import random
    #准备x,y轴坐标的数据
    x=range(60)
    y_shanghai=[random.uniform(15,18) for i in x]
    
    plt.figure(figsize=(20,8),dpi=100)
    plt.plot(x,y_shanghai)
    
    #构造x轴刻度标签
    x_ticks_lable=["11点{}分".format(i) for i in x]
    #构造y轴刻度
    y_ticks=range(40)
    
    #修改x,y轴的刻度显示
    plt.xticks(x[::5],x_ticks_lable[::5])
    plt.yticks(y_ticks[::5])
    
    plt.show()
    

    显示结果:

    1.3添加网格显示

    添加网格是为了 更清楚地观察图形对应的值

    plt.grid(True,linestyle='--',alpha=0.5)  #alpha表示透明度,0最浅
    

    1.4添加描述信息

    添加x轴、y轴描述信息及标题

    plt.xlabel("时间")
    plt.ylabel("温度")
    plt.title("中午11点0分到12点的温度变化显示",fontsize=20)
    

    1.5图像保存

    #保存图片到指定路径
    plt.savefig("test.png")
    
  • 注意:plt.show()会释放figure()资源,如果在显示图像之后保存图片将只能保存空图片。
  • 2. 在一个坐标系中绘制多个图像

    2.1 多次plot

    需求:再添加一个城市的温度变化
    收集到北京当天的温度变化情况,温度再1度到3度

    #添加北京温度的数据
    y_beijing=[random.uniform(1,3)for i in x]
    #绘制北京温度的图像
    plt.plot(x,y_beijing)
    #使用多次plot可以画多个折线
    plt.plot(x,y_beijing,color='r',linestyle="--")
    

    2.2 设置图形风格

    2.3 添加图例

  • 注意:如果只是在pli.plot()中设置label还不能最终显示出图例,还需要通过plt.legend()将图例显示出来。
  • plt.plot(x,y_shanghai,label="上海")
    plt.plot(x,y_beijing,color='r',linestyle="--",label="北京")
    #显示图例
    plt.legend(loc="best")
    


    3.多个坐标系显示——plt.subplots(面向对象的画图方法)

    如果我们想要将上海和北京的天气图显示在同一个图上的不同坐标系当中,效果如下:

    可以通过subplots函数实现

  • matplotlib.pyplot.subplots(nrows=1,ncols=1,**fig_kw)创建一个带有多个axes(坐标系/绘图区)的图
  • 注意:plt.函数名()相当于面向过程的画图方法,axes.set_方法名()相当于面向对象的画图方法。
    代码:
  • import matplotlib.pyplot as plt
    import random
    
    #准备数据
    x=range(60)
    y_shanghai=[random.uniform(15,18) for i in x]
    y_beijing=[random.uniform(1,3) for i in x]
    
    #1.创建画布
    fig,axes=plt.subplots(nrows=1,ncols=2,figsize=(20,8),dpi=100)
    
    #2.绘制图像
    axes[0].plot(x,y_shanghai,label="上海")
    axes[1].plot(x,y_beijing,color="r",linestyle="--",label="北京")
    
    
    #3.添加x,y轴刻度
    x_ticks_lable=["11点{}分".format(i) for i in x]
    y_ticks=range(40)
    
    #刻度显示
    axes[0].set_xticks(x[::5])
    axes[0].set_yticks(y_ticks[::5])
    axes[0].set_xticklabels(x_ticks_lable[::5])
    axes[1].set_xticks(x[::5])
    axes[1].set_yticks(y_ticks[::5])
    axes[1].set_xticklabels(x_ticks_lable[::5])
    
    #添加网格显示
    axes[0].grid(True,linestyle="--",alpha=0.5)
    axes[1].grid(True,linestyle="--",alpha=0.5)
    
    #添加描述信息
    axes[0].set_xlabel("时间",fontsize=20)
    axes[0].set_ylabel("温度",fontsize=20)
    axes[0].set_title("中午11点--12点某城市的温度变化图",fontsize=20)
    axes[1].set_xlabel("时间",fontsize=20)
    axes[1].set_ylabel("温度",fontsize=20)
    axes[1].set_title("中午11点--12点某城市的温度变化图",fontsize=20)
    
    
    #显示图例
    axes[0].legend(loc=0)
    axes[1].legend(loc=0)
    
    plt.show()
    
    

    运行结果:

    五、折线图的应用场景

  • 呈现公司产品(不同区域)每天活跃用户数目
  • 呈现app每天下载数量
  • 呈现产品新功能上线后,用户点击次数随时间的变化
  • 拓展:画各种数学函数图像
  • 注意:plt.plot()出来可以画折线图,还可以用来画各种数学函数图像

    代码:
  • import numpy as np
    #0.准备数据
    x=np.linspace(-10,10,1000)
    y=np.sin(x)
    #创建画布
    plt.figure(figsize=(20,8),dpi=100)
    
    #绘制函数图像
    plt.plot(x,y)
    #添加网格
    plt.grid()
    
    plt.show()
    
    
    物联沃分享整理
    物联沃-IOTWORD物联网 » Python Matplotlib基本用法详解

    发表评论