数据可视化神器!Matplotlib Python教程 | 从入门到精通绘制各种类型的图形和保存图形

news2024/12/25 12:39:25

大家好,我是爱吃熊掌的鱼,今天我要给大家带来一篇有趣开朗的Matplotlib Python教程。Matplotlib是Python中最流行的数据可视化库之一,它可以帮助我们将数据转化为易于理解的图表和图形。无论你是初学者还是专业人士,Matplotlib都是一个非常有用的工具。让我们开始吧!

第一部分:安装Matplotlib

在开始之前,我们需要先安装Matplotlib。在终端或命令行中运行以下命令来安装Matplotlib:

pip install matplotlib

如果你使用的是Jupyter Notebook或者是Google Colab这样的交互式笔记本,可以使用以下命令来安装Matplotlib:

pip install matplotlib

安装完成后,我们就可以开始使用Matplotlib了。

第二部分:Matplotlib的基础知识

在使用Matplotlib之前,我们需要了解一些基础知识。Matplotlib中最常用的对象是Figure和Axes对象。

  • Figure对象是一个画布,我们可以在上面绘制多个Axes对象。
  • Axes对象是一个包含图形和坐标轴的区域。我们可以在Axes对象上绘制数据。

在Matplotlib中,我们可以使用pyplot子模块来绘制图形。以下是绘制图形的基本步骤:

  1. 创建一个Figure对象。
  2. 创建一个Axes对象。
  3. 在Axes对象上绘制数据。
  4. 显示图形。

下面是一个简单的例子:

import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif'] = 'SimHei'
# 创建一个Figure对象
fig = plt.figure()

# 创建一个Axes对象
ax = fig.add_subplot(111)

# 在Axes对象上绘制数据
ax.plot([1, 2, 3, 4], [1, 4, 9, 16])

# 显示图形
plt.show()

在这里插入图片描述

以上代码创建了一个简单的折线图。我们使用plot()函数在Axes对象上绘制了数据,并使用show()函数显示了图形。

第三部分:绘制不同类型的图形

在Matplotlib中,我们可以绘制多种类型的图形,包括线图、柱状图、散点图、饼图等等。接下来,我们将介绍如何绘制不同类型的图形。

折线图

折线图是一种常见的数据可视化图形,用于显示数据随时间或其他变量的变化情况。在Matplotlib中,我们可以使用plot()函数来绘制折线图。

以下是一个简单的例子:

import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif'] = 'SimHei'
# 创建一个Figure对象
fig = plt.figure()

# 创建一个Axes对象
ax = fig.add_subplot(111)

# 在Axes对象上绘制折线图
x = [1, 2, 3, 4]
y = [1, 4, 9, 16]
ax.plot(x, y)

# 添加标题和标签 
ax.set_title("折线图") 
ax.set_xlabel("X轴") 
ax.set_ylabel("Y轴")
# 显示图形
plt.show()

在这里插入图片描述

以上代码创建了一个简单的折线图。我们使用plot()函数在Axes对象上绘制了折线,并使用set_title()、set_xlabel()和set_ylabel()函数添加了标题和标签。

柱状图

柱状图用于比较多个项目之间的数据。在Matplotlib中,我们可以使用bar()函数来绘制柱状图。

以下是一个简单的例子:

import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif'] = 'SimHei'
# 创建一个Figure对象
fig = plt.figure()

# 创建一个Axes对象
ax = fig.add_subplot(111)

# 在Axes对象上绘制柱状图
x = [1, 2, 3, 4]
y = [1, 4, 9, 16]
ax.bar(x, y)

# 添加标题和标签
ax.set_title("柱状图")
ax.set_xlabel("X轴")
ax.set_ylabel("Y轴")

# 显示图形
plt.show()

在这里插入图片描述

以上代码创建了一个简单的柱状图。我们使用bar()函数在Axes对象上绘制了柱状图,并使用set_title()、set_xlabel()和set_ylabel()函数添加了标题和标签。

散点图

散点图用于显示两个变量之间的关系。在Matplotlib中,我们可以使用scatter()函数来绘制散点图。

以下是一个简单的例子:

import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif'] = 'SimHei'
# 创建一个Figure对象
fig = plt.figure()

# 创建一个Axes对象
ax = fig.add_subplot(111)

# 在Axes对象上绘制散点图
x = [1, 2, 3, 4]
y = [1, 4, 9, 16]
ax.scatter(x, y)

# 添加标题和标签
ax.set_title("散点图")
ax.set_xlabel("X轴")
ax.set_ylabel("Y轴")

# 显示图形
plt.show()

在这里插入图片描述

以上代码创建了一个简单的散点图。我们使用scatter()函数在Axes对象上绘制了散点图,并使用set_title()、set_xlabel()和set_ylabel()函数添加了标题和标签。

饼图

饼图用于显示不同类别的占比情况。在Matplotlib中,我们可以使用pie()函数来绘制饼图。

以下是一个简单的例子:

import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif'] = 'SimHei'
# 创建一个Figure对象
fig = plt.figure()

# 创建一个Axes对象
ax = fig.add_subplot(111)

# 在Axes对象上绘制饼图
labels = ['A', 'B', 'C', 'D']
sizes = [15, 30, 45, 10]
ax.pie(sizes, labels=labels)

# 添加标题
ax.set_title("饼图")

# 显示图形
plt.show()

在这里插入图片描述

以上代码创建了一个简单的饼图。我们使用pie()函数在Axes对象上绘制了饼图,并使用set_title()函数添加了标题。

第四部分:Matplotlib的高级功能

除了基本的绘图功能之外,Matplotlib还提供了许多高级功能,可以帮助我们更好地控制图形的样式和布局。接下来,我们将介绍一些Matplotlib的高级功能。

子图

Matplotlib中的子图是一种将多个图形组合在一起显示的方式。在Matplotlib中,我们可以使用subplot()函数来创建子图。

以下是一个简单的例子:

import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif'] = 'SimHei'
# 创建一个Figure对象
fig = plt.figure()

# 创建一个包含2个子图的GridSpec对象
gs = fig.add_gridspec(1, 2)

# 创建第一个子图
ax1 = fig.add_subplot(gs[0, 0])
ax1.plot([1, 2, 3], [1, 2, 3])
ax1.set_title("子图1")

# 创建第二个子图
ax2 = fig.add_subplot(gs[0, 1])
ax2.plot([1, 2, 3], [3, 2, 1])
ax2.set_title("子图2")

# 显示图形
plt.show()

在这里插入图片描述

以上代码创建了一个包含2个子图的图形。我们使用add_gridspec()函数创建了一个包含1行2列的GridSpec对象,并使用add_subplot()函数在GridSpec对象上创建了两个子图。在设置子图的标题时,我们使用了set_title()函数。

图例

Matplotlib中的图例用于解释图形中不同元素的含义。在Matplotlib中,我们可以使用legend()函数来添加图例。

以下是一个简单的例子:

import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif'] = 'SimHei'
# 创建一个Figure对象
fig = plt.figure()

# 创建一个Axes对象
ax = fig.add_subplot(111)

# 在Axes对象上绘制折线图
x = [1, 2, 3, 4]
y1 = [1, 4, 9, 16]
y2 = [1, 2, 3, 4]
ax.plot(x, y1, label='数据集1')
ax.plot(x, y2, label='数据集2')

# 添加图例
ax.legend()

# 添加标题和标签
ax.set_title("折线图")
ax.set_xlabel("X轴")
ax.set_ylabel("Y轴")

# 显示图形
plt.show()

在这里插入图片描述

以上代码创建了一个包含图例的折线图。我们在绘制折线图时,使用label参数指定了每个数据集的名称,并在添加图例时使用legend()函数。在设置图形的标题和标签时,我们使用了set_title()、set_xlabel()和set_ylabel()函数。

注释

在Matplotlib中,我们可以使用annotate()函数向图形中添加注释。注释可以用于解释图形中的某些特殊点或区域。

以下是一个简单的例子:

import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif'] = 'SimHei'
# 创建一个Figure对象
fig = plt.figure()

# 创建一个Axes对象
ax = fig.add_subplot(111)

# 在Axes对象上绘制折线图
x = [1, 2, 3, 4]
y = [1, 4, 9, 16] 
ax.plot(x, y)

# 添加注释

ax.annotate('最大值', xy=(3, 9), xytext=(2, 12), arrowprops=dict(facecolor='red', shrink=0.05))

# 添加标题和标签

ax.set_title("折线图") 
ax.set_xlabel("X轴") 
ax.set_ylabel("Y轴")

# 显示图形

plt.show()

在这里插入图片描述

以上代码创建了一个包含注释的折线图。我们使用annotate()函数向图形中添加注释,指定注释文本的位置和箭头的属性。在设置图形的标题和标签时,我们使用了set_title()、set_xlabel()和set_ylabel()函数。

保存图形

在Matplotlib中,我们可以使用savefig()函数将图形保存为文件。Matplotlib支持多种文件格式,包括PNG、PDF、SVG和EPS等。

以下是一个简单的例子:

import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif'] = 'SimHei'
# 创建一个Figure对象
fig = plt.figure()

# 创建一个Axes对象
ax = fig.add_subplot(111)

# 在Axes对象上绘制折线图
x = [1, 2, 3, 4]
y = [1, 4, 9, 16]
ax.plot(x, y)

# 添加标题和标签
ax.set_title("折线图")
ax.set_xlabel("X轴")
ax.set_ylabel("Y轴")

# 保存图形
plt.savefig('line_chart.png')

# 显示图形
plt.show()

在这里插入图片描述

以上代码将绘制的折线图保存为PNG格式的文件。我们在调用savefig()函数时,指定了保存文件的名称和格式。

问题总结

错误1

问题错误代码

C:\Program Files\JetBrains\PyCharm 2022.3.3\plugins\python\helpers\pycharm_matplotlib_backend\backend_interagg.py:68: UserWarning: Glyph 36724 (\N{CJK UNIFIED IDEOGRAPH-8F74}) missing from current font.
  FigureCanvasAgg.draw(self)
C:\Program Files\JetBrains\PyCharm 2022.3.3\plugins\python\helpers\pycharm_matplotlib_backend\backend_interagg.py:68: UserWarning: Glyph 25240 (\N{CJK UNIFIED IDEOGRAPH-6298}) missing from current font.
  FigureCanvasAgg.draw(self)
C:\Program Files\JetBrains\PyCharm 2022.3.3\plugins\python\helpers\pycharm_matplotlib_backend\backend_interagg.py:68: UserWarning: Glyph 32447 (\N{CJK UNIFIED IDEOGRAPH-7EBF}) missing from current font.
  FigureCanvasAgg.draw(self)
C:\Program Files\JetBrains\PyCharm 2022.3.3\plugins\python\helpers\pycharm_matplotlib_backend\backend_interagg.py:68: UserWarning: Glyph 22270 (\N{CJK UNIFIED IDEOGRAPH-56FE}) missing from current font.
  FigureCanvasAgg.draw(self)

问题原因

这些警告是因为缺少相应字形的字体。这些字形是CJK(中日韩)统一表意文字(Unicode中的汉字和其他东亚象形文字)。如果你需要在Matplotlib图表中使用这些字形,可以尝试安装包含它们的字体,比如SimSun、SimHei、STSong等中文字体。

解决方案

在Matplotlib中,你可以使用rcParams参数来设置全局的字体,或者在每个图表中单独设置字体。比如,你可以使用如下代码将全局的字体设置为SimHei:

import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif'] = 'SimHei'

或者在绘制图表时,使用如下代码设置字体:

import matplotlib.pyplot as plt
plt.plot(x, y)
plt.xlabel('横轴', fontproperties='SimHei')
plt.ylabel('纵轴', fontproperties='SimHei')
plt.show()

这样就可以使用SimHei字体绘制图表了,就不会出现那些报错了。

有其他问题可以私信我,看到就会回的。

如果我的博客对你有帮助,请三连谢谢。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Eureka 注册中心——服务的注册与发现

文章目录 1.Eureka的结构和作用2.搭建eureka-server2.1.创建eureka-server服务2.2.引入eureka依赖2.3.编写启动类2.4.编写配置文件2.5.启动服务 3.服务注册3.1.引入依赖3.2 配置文件3.3启动多个user-service实例 4.服务发现4.1引入依赖4.2 配置文件4.3 服务拉取和负载均衡 最后…

flowable流程图绘制工具flowable-ui的安装和使用

一.简介 记录绘制flowable图的过程。 二.下载安装 1.下载 我这边是windows的,下载的版本是6.8.0,zip那个就可以,tar.gz是linux的 下载地址:https://github.com/flowable/flowable-engine/releases/tag/flowable-6.8.0 下载截…

PyCharm-2023安装教程

访问JetBrains的官方网站,下载PyCharm最新版本的安装程序。 双击下载的安装程序,在弹出的安装向导中点击“下一步”。 阅读许可协议,并同意协议条款。 选择安装路径。默认情况下,PyCharm会安装在C:\Program Files\JetBrain…

STL——Lambad表达式

📖作者介绍:22级树莓人(计算机专业),热爱编程<目前在c++阶段>——目标Windows,MySQL,Qt,数据结构与算法,Linux,多线程&…

【C语言】输入输出、字符串操作、内存操作、文件操作函数

三对基本输入输出函数 1.gets(),puts() gets()从标准输入中获取一个字符串,到str(自己创建的char型数组)中,读到换行或输入末尾结束获取r; 成功返回str,失败返回空。 char *gets(char *str)…

ARM汇编第一次上机(顺序、分支、单重循环)【嵌入式系统】

ARM汇编第一次上机(顺序、分支、单重循环)【嵌入式系统】 前言推荐说明ARM汇编第一次上机(顺序、分支、单重循环)内容1 sum1流程图代码编写结果分析 2 sum2流程图代码编写结果分析 3 numbers流程图代码编写结果分析 最后 前言 20…

Python统计学:配对样本t检验~均值差的检验

配对样本 t检验 用于两个不同条件下,对同一对象进行测量所得的两个样本均值的区别。 比如吃药前和吃药后体温是否有变化,大鱼钩和小鱼钩钓的鱼的体长是否有差异等。 配对样本是什么? 配对样本需要满足两个基本条件: 1. 样本间存…

Java版本工程管理系统软件源码 自主研发,工程行业适用

Java版工程项目管理系统 Spring CloudSpring BootMybatisVueElementUI前后端分离 功能清单如下: 首页 工作台:待办工作、消息通知、预警信息,点击可进入相应的列表 项目进度图表:选择(总体或单个)项目显示…

【Java 数据结构】PriorityQueue(堆)的使用及源码分析

🎉🎉🎉点进来你就是我的人了 博主主页:🙈🙈🙈戳一戳,欢迎大佬指点!人生格言:当你的才华撑不起你的野心的时候,你就应该静下心来学习! 欢迎志同道合的朋友一起加油喔🦾&am…

ES配置与使用

一、单机版安装 地址:www.elastic.co 下载tar格式,或者复制链接,wget url下载 启动: ./bin/elasticsearch 二、插件 解决页面问题,GitHub下载:elasticsearch-head 需要node环境。node -v检查node版本…

TryHackMe-Jack(boot2root)

Jack 破坏运行Wordpress的Web服务器,获得低特权用户,并使用Python模块将您的权限升级到root。 端口扫描 循例nmap web枚举 robots.txt wpscan枚举user wpscan直接爆 得到wendy的密码 直接登后台 根据题目提示,利用user role editor帮助我们…

使用chatgpt写一个划词翻译的浏览器插件

最近在网上流行的chatgpt,实在是太火了,好多人在使用,而且它的用处实在是太丰富了,能帮助我们解决很多问题,就比如说:编程,生成图片,翻译等。太丰富了。我看网上很多人都在说&#x…

江苏三年制专转本本法学类考纲配套课程及复习资料

法学类专业课内容比较多,需要背的也很多,今天我来给大家看一下我们应该如何学习法学类?01:考试科目考试科目:大学语文专业课基础理论考试课程A :法理学约 15%课程B:宪法学 约 15%课程C &#xf…

第九讲 常用数据结构之列表-2

列表的方法 列表类型的变量拥有很多方法可以帮助我们操作一个列表,假设我们有名为foos的列表,列表有名为bar的方法,那么使用列表方法的语法是:foos.bar(),这是一种通过对象引用调用对象方法的语法。后面我们讲面向对象…

接口自动化【三】(接口依赖之上传图片;Template 模块用法)

前言 一、后台上传图片接口 二、用postman来做这种有依赖的接口 三、使用 Template 模块进行字符串的替换 四、使用 Template 模块进行字符串的替换(针对于Excel表格中的数据) 总结 前言 本章中,对接口的依赖做了阐述,后台上…

怎么用Elai智能数字人来直播带货?

随着直播带货的火爆,越来越多的商家和品牌想要借助这一新兴的营销方式来提升销量和品牌影响力。但是,直播带货也面临着一些挑战,比如真人主播的成本高、稳定性差、风险大等。那么,有没有一种更好的解决方案呢?Elai智能…

leetcode重点题目分类别记录(三)动态规划深入

文章目录 动态规划背包问题01背包抽象出求解目标尝试进程子问题拆分基本情况根据拆分过程定义dp数组与转移方程遍历顺序与状态压缩模板归纳题目应用变种提升组合问题多维01背包有特殊限制的01背包 完全背包尝试进行子问题拆分转移方程题目应用变种提升-求组合/排列数 打家劫舍变…

【案例教程】CMIP6数据处理方法与典型案例分析实践技术

气候变化关系到农业、生态系统、社会经济和人类生存与发展,是当今世界关注的重点问题之一。IPCC(Intergovernmental Panel on Climate Change)第6次评估报告指出,自 20 世纪 50 年代以来,从全球平均气温和海温升高、大…

LightGBM^v^

LightGBM LightGBM(Light Gradient Boosting Machine)是一个基于梯度提升决策树(GBDT)的高效机器学习框架。它是由微软公司开发的,旨在提供更快、更高效的训练和预测性能。LightGBM在许多数据科学竞赛中都表现出色&am…

什么品牌的蓝牙耳机通话音质最好?通话音质好的蓝牙耳机

使用蓝牙耳机,无需取下耳机即可接听电话,来电时只需按一个按钮即可开始讲话,可以说是十分方便,为了帮助您找到可以帮助您拨打和接听电话的耳机,我们收集了适合通话的蓝牙耳机。 一、南卡小音舱Lite2蓝牙耳机 动圈单元…