数据分析基础之《matplotlib(2)—折线图》

一、折线图绘制与保存图片

1、matplotlib.pyplot模块

matplotlib.pyplot包含了一系列类似于matlab的画图函数。它的函数作用于当前图形(figure)的当前坐标系(axes)

python 复制代码
import matplotlib.pyplot as plt

2、折线图绘制与显示

展示城市一周的天气,比如从星期一到星期日的天气温度如下

python 复制代码
# 1)创建画布(容器层)
plt.figure()
# 2)绘制折线图(图像层)
plt.plot([1,2,3,4,5,6,7], [17,17,18,15,11,11,13])
# 3)显示图像
plt.show()

3、设置画布属性与图片保存

plt.figure(figsize=(), dpi=)

figsize:指定的长宽

dpi:图像的清晰度,dot per inch 每英寸有多少个点

返回fig对象

plt.savefig(path)

python 复制代码
# 1)创建画布(容器层)
plt.figure(figsize=(20,8), dpi=100)
# 2)绘制折线图(图像层)
plt.plot([1,2,3,4,5,6,7], [17,17,18,15,11,11,13])
# 保存图像
plt.savefig("/root/test78.png")
# 3)显示图像
plt.show()

注:plt.show()会释放figure资源,如果在显示图像之后保存图片将只能保存空图片

二、完善原始折线图1(辅助显示层)

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

2、准备数据并画出初始折线图​

python 复制代码
# 案例:画出某城市11点到12点1小时内每分钟的温度变化折线图,温度范围在15度~18度

import random

# 1、准备数据 x y
x = range(60)
y_shanghai = [random.uniform(15, 18) for i in x]

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

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

# 4、显示图像
plt.show()

3、添加自定义x、y刻度

修改刻度

(1)plt.xticks(x, labels, **kwargs)

说明:

x:要显示的刻度值

labels:数组类型,用于设置每个间隔的显示标签

**kwargs:用于设置标签字体倾斜度和颜色等外观属性

(2)plt.yticks(y, **kwargs)

说明:

y:要显示的刻度值

**kwargs:刻度值显示的说明

python 复制代码
import random

# 1、准备数据 x y
x = range(60)
y_shanghai = [random.uniform(15, 18) for i in x]

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

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

# 修改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))

# 4、显示图像
plt.show()

4、中文显示问题解决

(1)安装依赖包

yum install fontconfig mkfontscale

(2)从windows系统复制一个微软雅黑

C:\Windows\Fonts\msyh.ttc

(3)将msyh.ttc上传到

/usr/share/fonts/

(3)刷新缓存

mkfontscale && mkfontdir && fc-cache

(4)找到配置文件位置

python 复制代码
import matplotlib
matplotlib.matplotlib_fname()

显示

/usr/local/lib64/python3.6/site-packages/matplotlib/mpl-data/matplotlibrc

(6)编辑文件matplotlibrc

找到font.family,去掉注释

找到font.sans-serif,去掉注释,并加上Microsoft YaHei

(7)删除缓存

cd ~/.cache/matplotlib/

rm -r *

(8)代码

python 复制代码
import random

# 设置字体
plt.rcParams["font.sans-serif"]=["Microsoft YaHei"]
# 该语句解决图像中的"-"负号的乱码问题
plt.rcParams["axes.unicode_minus"]=False

# 1、准备数据 x y
x = range(60)
y_shanghai = [random.uniform(15, 18) for i in x]

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

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

# 修改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))

# 4、显示图像
plt.show()

5、添加网络显示

plt.grid(b, linestyle='', alpha=)

说明:

b:布尔值,是否显示网格

linestyle:线条风格

alpha:透明度

python 复制代码
import random

# 设置字体
plt.rcParams["font.sans-serif"]=["Microsoft YaHei"]
# 该语句解决图像中的"-"负号的乱码问题
plt.rcParams["axes.unicode_minus"]=False

# 1、准备数据 x y
x = range(60)
y_shanghai = [random.uniform(15, 18) for i in x]

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

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

# 修改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)

# 4、显示图像
plt.show()

6、添加描述信息

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

python 复制代码
import random

# 设置字体
plt.rcParams["font.sans-serif"]=["Microsoft YaHei"]
# 该语句解决图像中的"-"负号的乱码问题
plt.rcParams["axes.unicode_minus"]=False

# 1、准备数据 x y
x = range(60)
y_shanghai = [random.uniform(15, 18) for i in x]

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

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

# 修改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)

# 添加描述信息
plt.xlabel("时间变化")
plt.ylabel("温度变化")
plt.title("某城市11点到12点每分钟的温度变化状况")

# 4、显示图像
plt.show()

三、完善原始折线图2(图像层)

1、多次plot

需求:再添加一个城市的温度变化

收集到北京当天温度变化情况,温度在1度到3度

python 复制代码
import random

# 设置字体
plt.rcParams["font.sans-serif"]=["Microsoft YaHei"]
# 该语句解决图像中的"-"负号的乱码问题
plt.rcParams["axes.unicode_minus"]=False

# 1、准备数据 x y
x = range(60)
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=100)

# 3、绘制图像
plt.plot(x, y_shanghai, color="red", linestyle="--")
plt.plot(x, y_beijing, color="blue")

# 修改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)

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

# 4、显示图像
plt.show()

2、设置图形风格

颜色字符

r:红色

g:绿色

b:蓝色

w:白色

c:青色

m:洋红

y:黄色

k:黑色

风格字符

-:实线

--:虚线

-.:点划线

::点虚线

'':留空、空格

(效果见下一个)

3、显示图例

需要添加label标签,需要改图像层、辅助显示层

plt.legend(loc="best")

图例位置:

best:0

upper right:1

upper left:2

lower left:3

lower right:4

right:5

python 复制代码
import random

# 设置字体
plt.rcParams["font.sans-serif"]=["Microsoft YaHei"]
# 该语句解决图像中的"-"负号的乱码问题
plt.rcParams["axes.unicode_minus"]=False

# 1、准备数据 x y
x = range(60)
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=100)

# 3、绘制图像
plt.plot(x, y_shanghai, color="red", linestyle="--", label="上海")
plt.plot(x, y_beijing, color="blue", 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)

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

# 4、显示图像
plt.show()
相关推荐
临床数据科学和人工智能兴趣组4 小时前
RStudio的Console(控制台)是一个非常重要的组件
人工智能·机器学习·数据分析·r语言·r语言-4.2.1
暖和_白开水7 小时前
数据分析agent (七):contextvars 模块上下文request_id
java·前端·数据分析
杨超越luckly10 小时前
Agent应用指南:13年与13线——武汉地铁进化史
数据分析·html·agent·可视化·地铁客流
qifuzixunzhan10 小时前
售后数据分析技巧:助力企业构建高效服务体系
数据分析·售后服务·售后管理软件·售后管理
statistican_ABin12 小时前
WHO各国预期寿命影响因素分析与轻量回归预测
大数据·人工智能·python·数据分析·回归
chatexcel12 小时前
ChatExcel入选量子位智库2026 Q2「创新AI 100」,跻身AI数据分析领域代表产品!
人工智能·数据挖掘·数据分析
知识分享小能手1 天前
统计学学习教程,从入门到精通,分类数据分析 — 知识点详解(14)
学习·分类·数据分析
知识分享小能手1 天前
统计学学习教程,从入门到精通,分类数据分析 — 知识点详解(13)
学习·分类·数据分析
AC赳赳老秦1 天前
司法公开数据采集应用:OpenClaw 抓取裁判文书公开信息,批量整理同类参考案例
java·大数据·python·数据挖掘·数据分析·php·openclaw
初学者,亦行者1 天前
利用Pyecharts绘制堆叠柱状图
python·信息可视化·数据分析