Python——Matplotlib(基本用法)


一、什么是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()

  • 2
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值