Matplotlib基本知识点
7.1 功能:主要用于绘制二维图表
7.2 matplotlib三层结构
-
容器层
-
canvas
-
figure
-
axes
-
-
辅助显示层
-
添加x轴、y轴描述,标题等
-
-
图像层
-
绘制什么图像的声明
-
7.3 简单应用:绘制简单图标
步骤:
-
-
创建画布
-
绘制图像
-
展示图像
-
import matplotlib.pyplot as plt
# 1、创建画布
plt.figure(figsize=(20,8),dpi=100)
# 2、绘制图像
x = [1,2,3]
y = [4,5,6]
plt.plot(x,y)
# 3、显示图像
plt.show()
结果展示:

7.4 折线图与基础绘图功能
7.4.1 图像保存——一定要放到show()函数前面
plt.savafig("保存路径")
7.4.2 自定义x,y
plt.xticks
plt.yticks
注意:第一个参数必须是数字,如果不是数字,要进行值替换
示例:绘制天气折线图
import matplotlib.pyplot as plt
import random
# 创建数据
x = range(60)
y = [random.uniform(10,15)for i in x]
# 创建画布
plt.figure(figsize=(20,8),dpi=100)
# 图形绘制
plt.plot(x,y)
# 自定义x , y 轴刻度
y_ticks = range(40)
x_ticks_labels = ["11点{}分".format(i) for i in x]
plt.yticks(y_ticks[::5])
plt.xticks(x[::5],x_ticks_labels[::5]) # 必须先写x值,最先传进去的必须是数字
# 图形展示
plt.show()
结果展示:

7.4.3 添加网格显示
plt.grid(True,linestyle="-",alpha=1) # True为添加,linestyle="-"表示绘制网格方式为实线,alpha设置透明度
7.4.4 添加描述
plt.xlabel("时间")
plt.ylabel("温度")
plt.title("一小时温度变化图",fontsize = 20)
注意
:
图表中汉字显示为方框解决办法:
添加以下语句,指定默认字体为SimHei(黑体)
# 指定默认字体
from pylab import mpl
mpl.rcParams['font.sans-serif'] = ['SimHei']
7.4.5 添加图例
plt.legend()
注意:使用此函数时必须在画图时添加label属性
# 图形绘制
plt.plot(x,y_beijing,color="r",linestyle="-",label="北京") # 设置线条颜色,线条类型:-实线,--虚线,-.点划线
plt.plot(x,y_shanghai,label="上海")
# 显示图例
plt.legend(loc=0) #在画图时添加label属性 loc设置图例显示位置,默认为0右上角
结果:

7.5 多坐标系显示图像
fig,axes = plt.subplots(nrows=*,ncols=*,figsize=(*,*),dpi=*)
nrows——行数
ncols——列数
注意:有些方法需要添加set_*才能显示
代码示例:分开绘制北京和上海11 点到12点的温度变化折线图
"""
多个坐标系显示图像
需求:绘制出北京和上海11点到12点的温度变化折线图
"""
import matplotlib.pyplot as plt
import random
# 指定默认字体
from pylab import mpl
mpl.rcParams['font.sans-serif'] = ['SimHei']
# 创建数据
x = range(60)
y_beijing = [random.uniform(10,15)for i in x]
y_shanghai = [random.uniform(15,25)for i in x]
# 创建画布
# plt.figure(figsize=(20,8),dpi=50)
fig,axes = plt.subplots(nrows=1,ncols=2,figsize=(20,8),dpi=50)
# 图形绘制
# plt.plot(x,y_beijing,color="r",linestyle="-",label="北京")
# plt.plot(x,y_shanghai,label="上海")
axes[0].plot(x,y_beijing,color="r",linestyle="-",label="北京")
axes[1].plot(x,y_shanghai,label="上海")
# # 自定义x , y 轴刻度
y_ticks = range(40)
x_ticks_labels = ["11点{}分".format(i) for i in x]
# plt.yticks(y_ticks[::5])
# plt.xticks(x[::5],x_ticks_labels[::5]) # 必须先写x值,最先传进去的必须是数字
axes[0].set_xticks(x[::5])
axes[0].set_yticks(y_ticks[::5])
axes[0].set_xticklabels(x_ticks_labels[::5])
axes[1].set_xticks(x[::5])
axes[1].set_yticks(y_ticks[::5])
axes[1].set_xticklabels(x_ticks_labels[::5])
# # 添加网格显示
# plt.grid(True,linestyle="-",alpha=1) # True为添加,linestyle="-"表示绘制网格方式为实线,alpha设置透明度
axes[0].grid(True,linestyle="-",alpha=1)
axes[1].grid(True,linestyle="-",alpha=1)
# # 添加描述
# plt.xlabel("时间",fontsize = 16)
# plt.ylabel("温度",fontsize = 16)
# plt.title("一小时温度变化图",fontsize = 20)
axes[0].set_xlabel("时间",fontsize = 16)
axes[0].set_ylabel("温度",fontsize = 16)
axes[0].set_title("北京一小时温度变化图",fontsize = 20)
axes[1].set_xlabel("时间",fontsize = 16)
axes[1].set_ylabel("温度",fontsize = 16)
axes[1].set_title("上海一小时温度变化图",fontsize = 20)
# 显示图例
# plt.legend()
axes[0].legend(loc=0)
axes[1].legend(loc=0)
# 图形展示
plt.show()
结果展示:

7.6 折线图的应用场景
(1)表述数据变化
(2)绘制数学图像
举例:绘制y = sin(x)图像
"""
需求:绘制y = sinx 的图像
"""
import matplotlib.pyplot as plt
import numpy as np
# 1、创建数据
x = np.linspace(-10,10,1000)
y = np.sin(x)
# 2、创建画布
plt.figure(figsize=(20,8),dpi=50)
# 3、绘制图像
plt.plot(x,y)
# 添加网格
plt.grid()
# 4、展示图像
plt.show()
结果展示:

7.7 常见图形绘制
-
-
折线图——plt.plot()
-
变化
-
-
散点图——plt.scatter()
-
分布规律
-
-
柱状图——plt.bar()
-
统计、对比
-
-
直方图——plt.hist()
-
统计、分布
-
-
饼图——plt.pie()
-
占比
-
-
使用示例:
"""
使用matplotlib绘制其他图像
"""
import matplotlib.pyplot as plt
from pylab import mpl
mpl.rcParams['font.sans-serif'] = ['SimHei']
"""
1、散点图
plt.scatter()
"""
# # 1.1、数据准备
# x = [1.2,1.6,0.9,3.8,2.5,2.7,1.4,5.6,5.7,4.2]
# y = [4.2,5.2,4.6,2.8,6.7,1.9,2.5,8.2,1.6,5.0]
#
# # 1.2、创建画布
# plt.figure(figsize=(20,8),dpi=50)
#
# # 1.3、绘制图像
# plt.scatter(x,y)
#
# # 1.4、展示图像
# plt.show()
"""
2、柱状图
plt.bar()
需求:绘制电影的播放量柱状图
"""
# 2.1数据准备
movie_name = ['雷神','诸神黄昏','正义联盟','东方快车谋杀案','寻梦环游记','全球风暴','降魔传']
# 横坐标
x= range(len(movie_name))
# 播放量
y = [73853,57767,22354,15969,14839,8725,8716]
# 2.2创建画布
plt.figure(figsize=(20,8),dpi=50)
# 2.3绘制图像
plt.bar(x,y,color=['b','r','y','g','c','m','k'],width=0.5)
# x轴
plt.xticks(x,movie_name,fontsize=18)
plt.xlabel('电影名称',fontsize=20)
plt.ylabel('播放量',fontsize=20)
# 绘制网格
plt.grid()
# 添加标题
plt.title('某月电影播放量统计',fontsize=20)
# 2.4展示图象
plt.show()
结果展示:


此链接为matplotlib官网,进入查找API的使用方法绘制各种图像