解锁 Matplotlib:完整的知识点梳理与应用示例

news/2024/12/25 15:19:09/文章来源:https://www.cnblogs.com/java-note/p/18630477

一、基础概念

  • 目的:用于创建各种高质量的静态、动态和交互式的可视化图表,如折线图、柱状图、散点图、饼图等多种图形,帮助用户更好地理解和展示数据。
  • 架构:它有一个分层的架构,最顶层是脚本层(pyplot),方便快速创建简单的图表;中间层是Artist层,用于对图表的各个组件(如线条、文本、图形等)进行精细控制;底层是后端层,负责将图形渲染到不同的输出设备上,如屏幕、文件等。

二、安装

  • 可以使用pip命令进行安装。在命令行中输入pip install matplotlib,等待安装完成即可。如果使用Anaconda环境,它通常已经预装了Matplotlib。

三、基本使用

  1. 导入库
    • 通常使用import matplotlib.pyplot as plt语句来导入Matplotlib的绘图接口pyplot,并简称为plt,方便后续调用。
  2. 简单绘图示例(以折线图为例)
    • 创建数据:例如,x = [1, 2, 3, 4]y = [1, 4, 9, 16]
    • 绘制图形:使用plt.plot(x, y)来绘制折线图。
    • 显示图形:通过plt.show()函数来显示绘制好的图形。

四、图形类型

  1. 折线图(plot)
    • 用途:用于展示数据随时间或其他连续变量的变化趋势。
    • 示例代码
      import matplotlib.pyplot as plt
      x = [1, 2, 3, 4]
      y = [1, 4, 9, 16]
      plt.plot(x, y)
      plt.show()
      
  2. 柱状图(bar)
    • 用途:用于比较不同类别数据的大小。
    • 示例代码
      import matplotlib.pyplot as plt
      x = ['A', 'B', 'C', 'D']
      y = [10, 20, 15, 25]
      plt.bar(x, y)
      plt.show()
      
  3. 散点图(scatter)
    • 用途:用于展示两个变量之间的关系,观察数据的分布情况。
    • 示例代码
      import matplotlib.pyplot as plt
      x = [1, 2, 3, 4, 5]
      y = [2, 4, 6, 8, 10]
      plt.scatter(x, y)
      plt.show()
      
  4. 饼图(pie)
    • 用途:用于展示各部分占总体的比例关系。
    • 示例代码
      import matplotlib.pyplot as plt
      sizes = [15, 30, 45, 10]
      labels = ['A', 'B', 'C', 'D']
      plt.pie(sizes, labels = labels)
      plt.show()
      

五、图形组件

  1. 坐标轴(Axes)
    • 设置坐标轴范围:可以使用plt.xlim()plt.ylim()来设置x轴和y轴的范围。例如,plt.xlim(0, 10)会将x轴的范围设置为从0到10。
    • 设置坐标轴标签:使用plt.xlabel()plt.ylabel()来添加x轴和y轴的标签。例如,plt.xlabel('Time')plt.ylabel('Value')
    • 设置坐标轴刻度:可以使用plt.xticks()plt.yticks()来设置坐标轴的刻度。例如,plt.xticks([0, 1, 2, 3], ['a', 'b', 'c', 'd'])会将x轴的刻度设置为0、1、2、3,并分别标记为abcd
  2. 标题(Title)
    • 使用plt.title()来添加图形的标题。例如,plt.title('My Plot')会在图形的上方添加一个标题为My Plot的标题。
  3. 图例(Legend)
    • 在绘制多个数据系列时,可以使用plt.legend()来添加图例。首先,在绘制每个数据系列时需要添加一个label参数,例如plt.plot(x1, y1, label='Data 1')plt.plot(x2, y2, label='Data 2'),然后调用plt.legend()来显示图例,图例会显示每个数据系列对应的label

六、图形样式

  1. 线条样式
    • 颜色:可以在绘制图形时指定线条的颜色,例如plt.plot(x, y, color='red')会将线条颜色设置为红色。颜色可以使用英文颜色名称(如'red''blue'等)、RGB元组(如(1, 0, 0)表示红色)或十六进制颜色代码(如'#FF0000'表示红色)来指定。
    • 线型:可以使用linestyle参数来设置线条的样式,如'solid'(实线,默认)、'dashed'(虚线)、'dotted'(点线)等。例如,plt.plot(x, y, linestyle='dashed')会将线条设置为虚线。
    • 线宽:使用linewidth参数来设置线条的宽度,例如plt.plot(x, y, linewidth=2)会将线条宽度设置为2个像素。
  2. 标记样式(适用于散点图等)
    • 可以使用marker参数来设置标记的样式,如'o'(圆形)、's'(方形)、'^'(三角形向上)等。例如,plt.scatter(x, y, marker='o')会将散点图的标记设置为圆形。还可以设置标记的大小(s参数)、颜色(c参数)等。

七、子图

  1. 使用subplot函数创建子图
    • plt.subplot()函数用于在一个图形窗口中创建多个子图。它的参数格式通常为plt.subplot(row, col, index),其中row表示子图的行数,col表示子图的列数,index表示当前子图的索引(从左上角开始,从左到右,从上到下编号)。例如,plt.subplot(2, 2, 1)会创建一个2行2列的子图布局,并选择第一个子图。
    • 示例代码(在一个图形中绘制两个子图)
      import matplotlib.pyplot as plt
      x = [1, 2, 3, 4]
      y1 = [1, 4, 9, 16]
      y2 = [1, 2, 3, 4]
      plt.subplot(1, 2, 1)
      plt.plot(x, y1)
      plt.subplot(1, 2, 2)
      plt.plot(x, y2)
      plt.show()
      
  2. 使用subplots函数创建子图(推荐)
    • fig, axs = plt.subplots(row, col)函数会返回一个图形对象fig和一个子图对象数组axs。这种方式更方便对每个子图进行操作,例如axs[0, 0].plot(x, y)可以在第一个子图中绘制图形。
    • 示例代码(使用subplots函数)
      import matplotlib.pyplot as plt
      x = [1, 2, 3, 4]
      y1 = [1, 4, 9, 16]
      y2 = [1, 2, 3, 4]
      fig, axs = plt.subplots(1, 2)
      axs[0].plot(x, y1)
      axs[1].plot(x, y2)
      plt.show()
      

八、保存图形

  • 使用plt.savefig()函数来保存图形。例如,plt.savefig('my_plot.png')会将当前图形保存为my_plot.png文件,还可以指定文件格式(如pdfsvg等)和保存路径等。

九、3D绘图(需要安装mplot3d工具包)

  1. 导入3D绘图工具包
    • from mpl_toolkits.mplot3d import Axes3D
  2. 创建3D坐标轴对象
    • 例如,fig = plt.figure()ax = fig.add_subplot(111, projection='3d')
  3. 绘制3D图形(以3D散点图为例)
    • 假设xyz是三维数据点的坐标列表,可以使用ax.scatter(x, y, z)来绘制3D散点图。
    • 还可以绘制3D折线图(ax.plot(x, y, z))、3D曲面图(需要先创建网格数据,然后使用ax.plot_surface(X, Y, Z)等方法)等多种3D图形。

十、交互式绘图

  • Matplotlib可以与一些交互式后端(如ipywidgets在Jupyter Notebook环境中)结合使用,实现交互式绘图。例如,通过调整滑块来改变图形的参数,实时观察图形的变化等功能。这需要额外的配置和一些交互式库的支持。

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

搭建npm私有仓库——verdaccio

前言Verdaccio 是一个简单的、零配置要求的本地私有 npm 注册表。无需整个数据库即可开始!Verdaccio 开箱即用,带有自己的小型数据库,并且能够代理其他注册表(例如 npmjs.org),并在此过程中缓存下载的模块。对于那些希望扩展其存储功能的人,Verdaccio 支持各种社区制作的…

门店协作的未来:协作文档如何提升客户体验?

汽车销售是一种高竞争、高需求精细化管理的业务形态。门店销售团队不仅需要对接客户,还要实时反馈总部的策略与数据。如果销售流程中协同效率不足,往往会导致商机流失和客户满意度下降。协作文档工具的普及,为车企门店带来了全新解决方案。 车企门店销售面临的核心问题 在车…

功率器件的热设计基础(二)——热阻的串联和并联

功率半导体热设计是实现IGBT、碳化硅SiC高功率密度的基础,只有掌握功率半导体的热设计基础知识,才能完成精确热设计,提高功率器件的利用率,降低系统成本,并保证系统的可靠性。/ 前言 / 功率半导体热设计是实现IGBT、碳化硅SiC高功率密度的基础,只有掌握功率半导体的热设计…

视频分析设备平台EasyCVR关于未来监控系统可能会集成哪些新技术?

随着科技的飞速发展,监控系统正经历着一场革命性的变革。未来的监控系统将不再是单一的观察和记录工具,而是集成了多种前沿技术的智能平台,它们将极大地提高安全性、效率和响应速度。以下是未来监控系统可能集成的一些关键技术。1、人工智能技术 1)监控系统将越来越多地应用…

【亲测能用】专业音乐制作软件Ableton Live Suite v12.1.5 中文版(附安装教程)

软件介绍 在数字音频工作站(DAW)的领域中,Ableton Live以其创新和灵活性脱颖而出,成为全球音乐家和制作人的首选工具。由德国Ableton公司精心打造,这款软件不仅支持无缝的音乐播放和即时编辑,还提供了强大的音频效果和虚拟乐器,让音乐创作变得无限可能。 功能亮点 Ablet…

【测试侧】产品场景用例模板

产品的场景法用例设计的测试场景用例模板

宝藏推荐!J 人电商零售圣诞忙,哪 6 款办公软件能提升工作学习效能?

圣诞节的钟声敲响,电商零售行业瞬间陷入紧张而激烈的竞争漩涡。对于 J 人特质主导的电商团队而言,这不仅是一场销售大战,更是对团队协作与个人能力的严峻考验。在这关键时期,高效的办公软件犹如得力助手,能够帮助团队优化工作流程、提升沟通效率,实现工作与学习的双丰收。…

源码编译geoserver(idea)

官方教程:https://docs.geoserver.org/main/en/developer/quickstart/intellij.html从 git 存储库中检出源代码:git clone https://github.com/geoserver/geoserver.git geoserver列出可用的分支:% git branch2.21.x2.22.x* main选择main最新动态:% git checkout main或者为…

MFC中CBitmap、CBrush、CFont、CPalette、CPen、CRgn删除GDI对象问题

CBitmap、CBrush、CFont、CPalette、CPen、CRgn均继承自CGdiObject,CDI对象属于CGdiObject,在该类的析构函数中会释放,因此CBitmap、CBrush、CFont、CPalette、CPen、CRgn不必要显式调用DeleteObject()。如果GDI对象在在堆上分配的,则在特定时刻需要删除它,以便执行其析构…

【甲方安全】政府行业+80个威胁检测与安全事件分析场景(2025)

本篇幅详细梳理了 80 个在政企网络安全分析中常见的应用场景,这些场景涵盖了从攻击前兆(如漏洞扫描、情报收集)、攻击过程(如漏洞利用、横向移动)到攻击结果(如数据加密、信息泄露)的各个阶段,旨在协助 SOC 分析师们更好地构建主动防御体系。这些场景并非抽象概念,而是…

想自己做大模型备案的企业看过来【评估测试题+备案源文件】

大模型备案,大模型语料标注规则,大模型安全评估报告文章目录 (一)适用主体 (二)语料安全 (三)模型安全 (四)安全措施要求 (五)词库要求 (六)安全评估要求 (七)附录大模型备案材料源文件 2024年3月1日,我国通过了《生成式人工智能服务安全基本要求》(以下简称…

树洞09

情绪很不好,没人能依靠 钱财多有价,感情胜千金 金玉良缘广,木石前盟稀 愿君有真爱,伴君度此生。