数据分析第一篇——Matplotlib入门笔记(一)——折线图的绘制

matplotlib图像的三层结构

  • 1.容器层
    • 画板层(canvas)
    • 画布层(figure)
    • 绘图区/坐标系(subplots/axes)
  • 2.辅助显示层
  • 3.图像层

1.1 折线图的绘制与显示

1.1.1 显示一周的天气

# 创建画布, figsize设置画布大小, dpi设置清晰度
plt.figure(figsize=(7, 7), dpi=80)

# 绘制图像
plt.plot([1,2,3,4,5,6,7],[17,17,18,15,11,11,13]) 

# 保存图像(不能在plt.show之后保存,否则会保存空图片)
plt.savefig('test78.png') #括号内为图片路径

# 显示图像
plt.show() 
显示效果:

显示效果

1.1.2 完善初始折线图1(辅助显示层)

# 需求:画出某城市11点到12点1小时内每分钟的温度变化图,温度范围为15~18
# 需求:再添加一个城市的温度变化
# 收集到北京当天的温度变化情况,温度在1到3℃
import random
import matplotlib.pyplot as plt
#font = FontProperties(fname=r"c:\windows\fonts\simsun.ttc", size=14)
plt.rcParams['font.sans-serif']=['SimSun'] #用来正常显示中文标签
plt.rcParams['axes.unicode_minus']=False #用来正常显示负号

# 1. 准备数据
x = range(60) # 产生从0到60,步长为1的range可迭代对象, range左闭右开
# 准备上海的数据
y_shanghai = [random.uniform(15, 18) for i in x] # 用列表生成式产生温度分布
# 准备北京的数据
y_beijing = [random.uniform(1, 3) for i in x]

# 2. 创建画布
plt.figure(figsize=(20, 8), dpi=80)

# 3. 绘制图像
plt.plot(x, y_shanghai, color='r', linestyle='--', label='上海')
plt.plot(x, y_beijing, color='b', label='北京')

# 显示图例
plt.legend(loc='best')

# 修改x、y的刻度
# 准备x轴的刻度说明
x_label = ['11点{}分'.format(i) for i in x]
plt.xticks(x[::5], x_label[::5]) #说明与变量必须一一对应
plt.yticks(range(0, 40, 5))

#添加网格线
plt.grid(True, linestyle='--', alpha=0.5) # Ture可以省略,alpha为透明度

# 添加描述信息
plt.xlabel('时间变化')
plt.ylabel('温度变化')
plt.title('上海、北京11点到12点的温度变化情况')

# 4. 显示图像
plt.show()
显示效果:显示效果

1.1.3 完善初始折线图2(图像层)

设置图形风格

颜色字符    风格字符
r 红色      - 实线
g 绿色      -- 虚线
b 蓝色      -.点划线
w 白色      : 点虚线
c 青色      '' 留空、空格
m 洋红
y 黄色
k 黑色

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

figure, axes = plt.subplots(nrows=1, ncols=2, **fig_kw)
axes[0].方法名()
axes[1].方法名()

设置标题等方法不同:
axes[0].set_xticks()
axes[1].set_yticks()
axes[0].set_xlabel()
axes[1].set_ylabel()

关于axes子坐标系的更多方法:参考https://matplotlib.org/api/axes_api.html#matplotlib.axes.Axes


  • 注意:plt.函数名()相当于面向过程的画图方法,axes.set_方法名()相当于面向对象的画图方法
# 需求:画出某城市11点到12点1小时内每分钟的温度变化图,温度范围为15~18
# 需求:再添加一个城市的温度变化
# 收集到北京当天的温度变化情况,温度在1到3℃
import random
import matplotlib.pyplot as plt
#font = FontProperties(fname=r"c:\windows\fonts\simsun.ttc", size=14)
plt.rcParams['font.sans-serif']=['SimSun'] #用来正常显示中文标签
plt.rcParams['axes.unicode_minus']=False #用来正常显示负号

# 1. 准备数据
x = range(60) # 产生从0到60,步长为1的range可迭代对象
# 准备上海的数据
y_shanghai = [random.uniform(15, 18) for i in x] # 用列表生成式产生温度分布
# 准备北京的数据
y_beijing = [random.uniform(1, 3) for i in x]

# 2. 创建画布
# plt.figure(figsize=(20, 8), dpi=80)
figure, axes = plt.subplots(nrows=1, ncols=2, figsize=(20, 8), dpi=80)

# 3. 绘制图像
axes[0].plot(x, y_shanghai, color='r', linestyle='--', label='上海')
axes[1].plot(x, y_beijing, color='b', label='北京')

# 显示图例(loc='best'用于设置图例位置)
axes[0].legend(loc='best')
axes[1].legend(loc='best')

# 修改x、y的刻度
# 准备x轴的刻度说明
x_label = ['11点{}分'.format(i) for i in x]
axes[0].set_xticks(x[::5]) #说明与变量必须一一对应
axes[0].set_xticklabels(x_label)
axes[0].set_yticks(range(0, 40, 5))
axes[1].set_xticks(x[::5]) #说明与变量必须一一对应
axes[1].set_xticklabels(x_label)
axes[1].set_yticks(range(0, 40, 5))

#添加网格线
axes[0].grid(True, linestyle='--', alpha=0.5) # Ture可以省略,alpha为透明度
axes[1].grid(True, linestyle='--', alpha=0.5) # Ture可以省略,alpha为透明度

# 添加描述信息
axes[0].set_xlabel('时间变化')
axes[0].set_ylabel('温度变化')
axes[0].set_title('上海11点到12点的温度变化情况')
axes[1].set_xlabel('时间变化')
axes[1].set_ylabel('温度变化')
axes[1].set_title('北京11点到12点的温度变化情况')

# 4. 显示图像
plt.show
显示效果:在这里插入图片描述

1.1.5 折线图的应用场景

  • 呈现某事物、某指标随时间的变化状况
  • 拓展:画各种数学函数图像
import numpy as np
import matplotlib.pyplot as plt

# 1.准备数据
x = np.linspace(-1, 1, 1000)
y = 2*x*x

# 2.创建画布
plt.figure(figsize=(20, 8), dpi=80)

# 3.绘制图像
plt.plot(x, y)

# 显示网格
plt.grid(linestyle='--', alpha=0.5)

# 4.显示图像
plt.show()
显示效果:在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值