Python_AI库 Matplotlib的应用简例:绘制与保存折线图

本文默认读者已具备以下技能:

  • 熟悉Python基础语法,以自行阅读python代码块
  • 熟悉Vscode或其它编辑工具的应用

在数据可视化领域,Matplotlib无疑是一个强大的工具。它允许我们创建各种静态、动态、交互式的可视化图形,帮助我们更好地理解和分析数据。今天,我将通过一个简单的折线图绘制示例,来介绍Matplotlib的基础应用

from matplotlib import pyplot as plt#导入pyplot模块设置别名plt
from matplotlib import font_manager#导入font_manager,用于管理字体
import random#导入random模块,在该案例中仅用于随机生成一组数字,方便演示,非必需


'''
x,y是绘制折线图最简模型必需的变量
'''
#1至30组成列表X,用于表示日期
x = range(1,31)
#从3000至5000随机返回1个数值,共30次,组成列表Y,用于表示销量
y = [random.randint(3000,5000) for _ in range(30)]
​
'''
以下代码块用来扩展最小模型,使图表最终效果更加美观
'''
#控制画布的大小和DPI
plt.figure(figsize=(20,8),dpi=80)
#设置中文字体:matplotlib默认不支持中文名称,需要设置后才能显示
my_font = font_manager.FontProperties(fname=r"C:\Windows\Fonts\simsun.ttc")
#设置X坐标轴的刻度显示
plt.xticks(x)
#添加标题及x,y轴描述信息
plt.xlabel('日        期',fontproperties=my_font,fontsize=10)
plt.ylabel('销        量',fontproperties=my_font,fontsize=10)
plt.title('XX门店4月份每日销售额',fontproperties=my_font,fontsize=18)
​
'''
plot和show方法是绘制最简模型必需的方法
plot用于绘制折线图
show用于展示折线图
'''
plt.plot(x,y)
plt.show()
​
#保存图形文件到当前路径下
plt.savefig('my_plot.png')
​

首先,我们需要导入必要的模块。在这个例子中,我们导入了Matplotlib的pyplot模块,并为其设置了别名plt,以便后续调用。同时,我们还导入了font_manager模块,用于管理字体,因为Matplotlib默认不支持中文名称的显示。最后,我们还导入了random模块,用于生成随机数据,方便我们进行演示。

接下来,我们定义了两个列表x和y。x列表包含了1至30的数字,用于表示日期;y列表则通过random.randint函数随机生成了30个在3000至5000之间的数值,用于表示销量。这两个列表将作为我们绘制折线图的基础数据。

在绘制折线图之前,我们可以对画布进行一些设置,以控制图形的大小和DPI(每英寸点数)。通过plt.figure函数,我们设置了画布的宽度为20英寸,高度为8英寸,DPI为80。这样可以使图形更加清晰,便于观察。

由于Matplotlib默认不支持中文名称的显示,我们需要设置字体才能正确显示中文。通过font_manager.FontProperties函数,我们指定了字体文件的路径(这里使用的是Windows系统下的宋体字体文件),并将其保存在my_font变量中。在后续添加标题和坐标轴描述信息时,我们将使用这个变量来确保中文能够正确显示。

接着,我们使用plt.xticks函数设置了X坐标轴的刻度显示。由于x列表中的数字已经表示了日期,我们直接将其作为刻度值。然后,通过plt.xlabel、plt.ylabel和plt.title函数,我们分别添加了X轴、Y轴的描述信息和图形的标题,并指定了字体属性和字体大小。

现在,我们可以开始绘制折线图了。使用plt.plot函数,我们传入x和y两个列表作为参数,Matplotlib将根据这两个列表中的数据绘制出折线图。最后,通过plt.show函数,我们可以将绘制好的折线图展示出来。

除了展示图形之外,我们还可以将图形保存为文件。在这个例子中,我们使用plt.savefig函数将图形保存为PNG格式的文件,文件名为"my_plot.png"。这样,我们就可以将图形保存下来,方便后续查看和分享。

通过以上步骤,我们成功地使用Matplotlib绘制并保存了一个简单的折线图。当然,Matplotlib的功能远不止于此,它还支持绘制各种复杂的图形、添加图例、设置颜色、样式等。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/579571.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

pyaibote--安卓自动化环境配置与基础的使用方法

前言 欢迎来到我的博客 个人主页:北岭敲键盘的荒漠猫-CSDN博客 pyaibote介绍 pyaibote是一个全新,强大的办公自动化库。 支持找图,识别像素等操作。 比appium快十倍。 文章介绍 有大佬给我提到这个库后,我来查看。然后发现这个库太新了&am…

Coursera: An Introduction to American Law 学习笔记 Week 04: Constitutional Law

An Introduction to American Law 本文是 https://www.coursera.org/programs/career-training-for-nevadans-k7yhc/learn/american-law 这门课的学习笔记。 文章目录 An Introduction to American LawInstructors Week 04: Constitutional LawKey Constitutional Law TermsSup…

redission原理笔记

加锁成功的线程,将UUID和线程id和key绑定, 加锁成功后,内部有一个看门狗机制,每隔十秒看下当前线程是否还持有锁,延长生存时间。 没有获取锁的就一直自旋等待,直到超时。 如果redis是主从同步的&#xff0…

Android Studio gradle 默认sourceSets配置

一. AS默认的sourceSets配置 sourceSets在Android插件中如何使用的:android {sourceSets {main {manifest.srcFile AndroidManifest.xmljava.srcDirs [src]resources.srcDirs [src]aidl.srcDirs [src]renderscript.srcDirs [src]res.srcDirs [res]assets.srcD…

Anti Rookit -- 检测隐藏进程

Anti Rookit 一:检测隐藏进程 引言 检测隐藏进程除了众所周知的枚举进程ID之外,还有枚举句柄表的方式。不过今天给大家带来的是第三种方法。 探究 应用层通过接口 C r e a t e P r o c e s s \textcolor{cornflowerblue}{CreateProcess} CreateProcess…

现代信号处理7_最小二乘(CSDN_20240428)

最小二乘法最早由高斯在18世纪提出,几百年以来,这种方法一直被广泛应用。 最小二乘简介 这里是研究最小二乘的起点。随机变量只能存在与理论计算中,我们在工程实践中对随机变量的认识与理论计算中得到的关于随机变量的各种性质相比&#xff…

Penpad 再获 Animoca Brands 投资,全新生态历程

Penpad是Scroll生态的LaunchPad & Yield Aggregator平台,该平台近日在融资上取得了系列进展。据悉,Penpad在前不久率先获得了来自于Gate Labs以及Scroll联合创始人Sandy Peng的融资,并且在近日,其又获得了来自于知名加密投资机…

Coursera: An Introduction to American Law 学习笔记 Week 01: Tort Law

An Introduction to American Law 本文是 https://www.coursera.org/programs/career-training-for-nevadans-k7yhc/learn/american-law 这门课的学习笔记。 文章目录 An Introduction to American LawInstructors SyllabusWeek 01: Tort LawKey Tort Law TermsTort Law: Part …

2024.阳光能源追光计划暨大陆考察团交流分享会

近日大陆考察团抵达香港,受到了本司热情接待和安排。公司于4月27日下午举办了阳光能源追光计划主题交流会。 会上公司营销部总监张超,分享了阳光能源近几年的能源发展之路及公司新推出的追光计划,得到了大陆考察交流团团长杨国均先生的高度赞…

CSS3(响应式布局)

#过渡# 属性连写: transition: width 2s linear 1s; //前一个时间用于表示过渡效果持续时间,后一个时间用于表示过渡效果的延迟。 #转换# #2D转换# 和 #3D转换# 注意:其中angle对应单位为:deg #圆角# #边框# …

java中的泛型(三)——通配符

在前面的文章中我们简要介绍了泛型的概念以及泛型类和泛型方法的使用。在介绍泛型时我们说过在在java中一般用E、T、K、V、N、?这几个字母和符号来表示泛型,对于前面的几个字符它们的使用没有区别,只要注意它们所代表的类型就好。而对于最后一个&#x…

Oracle集群-常用查询及操作(工作日常整理)

1.Oracle集群状态 select * from gv$instance; 示例结果: 2.Oracle集群-增大表空间 常见问题: 导入时或使用时,提示无法extend table ,增加表空间即可 常用操作: 1)查询表空间 select * from dba_tablespaces; --…

微信小程序[黑马笔记]

简介 常用组件 视图组件 <!--pages/list/list.wxml--><scroll-view class"container1" scroll-y><view>A</view><view>B</view><view>A</view></scroll-view><!--pages/list2/list.wxml--><swiper …

【禅道客户案例】同方智慧能源数智化转型新实践 禅道助力前行

同方智慧能源是同方股份有限公司的骨干企业。依托中核集团、清华大学的科技优势&#xff0c;坚持技术和资源双核驱动&#xff0c;基于30多年行业积淀&#xff0c;面向建筑、交通、工业、北方供热、数据中心等主要用能场景提供设计咨询、产品技术、投资建设、运营服务&#xff0…

设计模式学习笔记 - 项目实战一:设计实现一个支持各种算法的限流框架(实现)

概述 上篇文章&#xff0c;我们介绍了如何通过合理的设计&#xff0c;来实现框架的功能性需求的同时&#xff0c;满足易用、易扩展、灵活、低延迟、高容错等非功能性需求。在设计的过程中&#xff0c;我们也借鉴了之前讲过的一些开源项目的设计思想。比如 Spring 的低侵入松耦…

细致讲解——不同类型LSA是作用以及相互之间的联系

目录 一.常见的LSA类型 二.OSPF特殊区域 1.区域类型 2.stub区域和totally stub区域 &#xff08;1&#xff09;stub区域 &#xff08;2&#xff09;totally stub区域 3.nssa区域和totally nssa区域 &#xff08;1&#xff09;nssa区域 &#xff08;2&#xff09;totall…

【Android】SharedPreferences阻塞问题深度分析

前言 Android中SharedPreferences已经广为诟病&#xff0c;它虽然是Android SDK中自带的数据存储API&#xff0c;但是因为存在设计上的缺陷&#xff0c;在处理大量数据时很容易导致UI线程阻塞或者ANR&#xff0c;Android官方最终在Jetpack库中提供了DataStore解决方案&#xf…

微信小程序使用echarts实现条形统计图功能

微信小程序使用echarts组件实现条形统计图功能 使用echarts实现在微信小程序中统计图的功能&#xff0c;其实很简单&#xff0c;只需要简单的两步就可以实现啦&#xff0c;具体思路如下&#xff1a; 引入echarts组件调用相应的函数方法 由于需要引入echarts组件&#xff0c;代…

.net报错异常及常用功能处理总结(持续更新)

.net报错异常及常用功能处理总结---持续更新 1. WebApi dynamic传参解析结果中ValueKind Object处理方法问题描述方案1&#xff1a;(推荐&#xff0c;改动很小)方案2&#xff1a; 2.C# .net多层循环嵌套结构数据对象如何写对象动态属性赋值问题描述JavaScript动态属性赋值.net…

WebSocket通信协议

WebSocket是一种网络通信协议.RFC6455定义了它的通信标准 WebSocket是HTML5开始提供的一种在单个TCP连接上进行全双向通信的协议 HTTP协议是一种无状态的,无连接的,单向的应用层协议.它采用了请求,响应的模式.通信请求只能由客户端发起,服务端对请求做出应答处理. 这种模型有…
最新文章