数据分析基础之《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() ``` ![](https://file.jishuzhan.net/article/1728423071632592897/a2d737151e3e95ccbfac02f6730896fc.webp) 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() ``` ![](https://file.jishuzhan.net/article/1728423071632592897/0af77a5f859dfe3a7d41464615343578.webp) 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() ``` ![](https://file.jishuzhan.net/article/1728423071632592897/f462874386dff8c0e5493bebe3c3bf5a.webp) 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() ``` ![](https://file.jishuzhan.net/article/1728423071632592897/16023d99ecdb0dd0f4ff5c10e363f129.webp) 三、完善原始折线图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() ``` ![](https://file.jishuzhan.net/article/1728423071632592897/ab893f38ce49100ba65be2b473aae4b5.webp) 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() ``` ![](https://file.jishuzhan.net/article/1728423071632592897/644854c6bc1f2cdef0e80dce42c53690.webp)

相关推荐
生信碱移8 小时前
PACells:这个方法可以鉴定疾病/预后相关的重要细胞亚群,作者提供的代码流程可以学习起来了,甚至兼容转录组与 ATAC 两种数据类型!
人工智能·学习·算法·机器学习·数据挖掘·数据分析·r语言
ClkLog-开源埋点用户分析14 小时前
在信创环境下,如何判断一套用户行为分析系统是否“真正可用”?
数据分析·开源·开源软件·用户画像·埋点系统
SelectDB15 小时前
Doris & SelectDB for AI 实战:从基础 RAG 到知识图谱增强的完整实现
数据库·人工智能·数据分析
SL-staff18 小时前
中小企业 BI 选型:帆软、Power BI、JVS-BI 性价比与架构对比
数据分析·数据可视化·powerbi·帆软·bi工具·部署架构·jvs-bi
数模竞赛Paid answer19 小时前
2024年华数杯数学建模A题机器臂关节角路径的优化设计解题全过程文档及程序
数学建模·数据分析·华数杯
小王毕业啦21 小时前
1990-2024年 省级-绿色金融指数(+文献)
大数据·人工智能·数据挖掘·数据分析·社科数据·实证分析·经管数据
小王毕业啦21 小时前
1985.1-2026.1 世界各国经济政策不确定性指数(xlsx)
大数据·人工智能·数据挖掘·数据分析·社科数据·实证数据·经管数据
白杆杆红伞伞1 天前
ggplot_比例表现02
数据分析·r
十三画者1 天前
【文献分享】MicroProphet一种具有时间感知能力的机器学习框架能够以个性化的方式精确预测微生物群落的动态变化
人工智能·机器学习·数据分析
实用科研工具箱1 天前
生物医学科研工具测评:绘图、数据可视化、素材一站式整理
信息可视化·数据挖掘·数据分析·科研·科研绘图·科研绘图工具