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

大家好,我是爱吃熊掌的鱼,今天我要给大家带来一篇有趣开朗的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字体绘制图表了,就不会出现那些报错了。

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

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

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

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

相关文章

ThreadPoolExecutor源码阅读流程图

1.创建线程池 public ThreadPoolExecutor(int corePoolSize,int maximumPoolSize,long keepAliveTime,TimeUnit unit,BlockingQueue<Runnable> workQueue) {this(corePoolSize, maximumPoolSize, keepAliveTime, unit, workQueue,Executors.defaultThreadFactory(), def…

巧用千寻位置GNSS软件| 线路施工放样应用技巧

线路施工放样主要是解决线路工程和水利工程施工中&#xff0c;线路及渠道中线和边坡施工放样编辑的专用程序。千寻位置GNSS软件中完成线路施工放样可按照下述步骤操作。 点击【测量】->【线路施工放样】&#xff0c;选择一条线路放样&#xff0c;如图 5.6-1所示。 图 5.6-1…

IT人员选择光缆的五大原因

基于铜和光纤的信号都会受到衰减&#xff0c;或者波形信号随着距离的推移而减弱。然而&#xff0c;光纤电缆可以在更长的距离上传输数据。事实上&#xff0c;差异是巨大的。 当构建需要长距离、高速和/或高带宽连接的网络时&#xff0c;毫无疑问&#xff1a;光纤电缆会赢得胜利…

在更高的起点创业 专访Aqara重庆服务商,探问「经营秘籍」

从小众产品到大众选择&#xff0c;智能家居在短短几年内迅速崛起&#xff0c;成为各大Shopping Mall的引流神器。而作为一种新消费&#xff0c;智能家居产品也为品牌和渠道在获客方面提出了新的考验。相比传统建材&#xff0c;智能家居如何快速引流&#xff0c;促进成交&#x…

【MySQL】如何使用MySQL锁(全局锁、表级锁、行级锁)?

文章目录 概述一、全局锁介绍语法特点 二、表级锁介绍表锁元数据锁意向锁 三、行级锁介绍行锁间隙锁&临键锁 概述 锁是计算机协调多个进程或线程并发访问某一资源的机制。在数据库中&#xff0c;除传统的计算资源&#xff08;CPU、RAM、I/O&#xff09;的争用以外&#xf…

怎么把avi文件转换成mp4视频格式,4个高能方法

怎么把avi文件转换成mp4视频格式&#xff1f; 当您下载到avi格式的视频文件时&#xff0c;您可能会选择将其转换为MP4格式的文件。 avi是一种由微软开发的多媒体容器格式&#xff0c;尽管现在已经被认为是老旧的技术&#xff0c;但由于其简单易懂的开发API和Windows的通用性&am…

状态机编程

//定义的枚举 typedef enum { KEY_UP 1, //按键按下 Edge_Lead2, //前沿抖动 KEY_DOWN 3, //按键松开 Edge_Back4, //后沿抖动 } KEY_Status; 主函数&#xff1a; #include "stm32f4xx.h" #include "led.h" #include "delay.h" #include "…

JavaScript—javaEE

文章目录 1.关于JavaScript2.引入的方式3.输入输出4.语法4.1变量4.2基本数据类型4.3运算符4.4数组4.5函数4.6对象 5.dom5.1获取元素5.2操作元素5.3表单控件5.4样式&#xff1a;style属性5.5模仿和服务端交互 6.ajax6.1概念6.2作用6.3Ajax代码6.4Ajax发get请求6.5Ajax发post请求…

学成在线笔记+踩坑(4)——【媒资管理模块】上传图片,Nacos+Gateway+MinIO

导航&#xff1a; 【黑马Java笔记踩坑汇总】JavaSEJavaWebSSMSpringBoot瑞吉外卖SpringCloud黑马旅游谷粒商城学成在线牛客面试题 目录 1. 媒资管理模块简介 1.1 模块介绍 1.2 业务流程 1.2.1 上传课程图片 1.2.2 上传视频 1.2.3 处理视频 1.2.4 审核媒资 1.2.5 绑定媒…

Redis原理

Redis原理 数据结构 动态字符串SDS Redis中key是字符串&#xff0c;value是字符串或字符串集合。不过redis没有直接使用C语言的字符串。因为C中字符串存在问题&#xff1a;①获取字符串长度需要运算②非二进制安全③不可修改。 //c语言&#xff0c;声明字符串&#xff1a; …

字节岗位薪酬体系曝光,看完感叹:不服真不行

曾经的互联网是PC的时代&#xff0c;随着智能手机的普及&#xff0c;移动互联网开始飞速崛起。而字节跳动抓住了这波机遇&#xff0c;2015年&#xff0c;字节跳动全面加码短视频&#xff0c;从那以后&#xff0c;抖音成为了字节跳动用户、收入和估值的最大增长引擎。 自从字节…

媒体宣传的优势与重要性

传媒如春雨&#xff0c;润物细无声&#xff0c;大家好&#xff0c;我是51媒体网胡老师。 媒体宣传日益成为企业和品牌宣传推广的重要手段&#xff0c;媒体的宣传报道更有权威性&#xff0c;能够帮助品牌进行背书&#xff0c;更有权威性&#xff0c;另外媒体的报道在搜索引擎中…

智能文案改写工具-智能改写工具免费

智能写作机器人 智能写作机器人&#xff0c;这是一种让人类写作变得更加简单的创新技术。它的出现&#xff0c;为内容生产领域带来了巨大的进步&#xff0c;不仅提高了人们的写作效率&#xff0c;还让优质的内容更容易被产生和共享。现在&#xff0c;让我们来了解一下智能写作…

Windows环境下NVM安装后Node/NPM命令无法使用

问题&#xff1a;Windows环境下安装nvm后&#xff0c;使用nvm安装node&#xff0c;无法使用node相关命令。 解决方案&#xff1a;注意安装的时候有两个路径&#xff0c;第一个是nvm所在的路径&#xff0c;第二个是nodejs所在的路径&#xff0c;大家需要在对应的目录下找到路径…

Python爬虫实战——获取电影影评

Python爬虫实战——获取电影影评 前言第三方库的安装示例代码效果演示结尾 前言 使用Python爬取指定电影的影评&#xff0c; 注意&#xff1a;本文仅用于学习交流&#xff0c;禁止用于盈利或侵权行为。 操作系统&#xff1a;windows10 家庭版 开发环境&#xff1a;Pycharm Co…

Linux嵌入式uboot使用tftp网络启动加载zImage、设备树

文章目录 一、前言二、Linux U-boot 相关命令&#xff08;1&#xff09;help 命令&#xff08;2&#xff09;printenv 命令&#xff08;3&#xff09;setenv 函数&#xff08;4&#xff09;saveenv 函数 三、tftp启动linux内核步骤&#xff08;1&#xff09;进入u-boot模式&…

vue:生成二维码 qrcode、vue-qr(二维码中间可带logo)

一、方法一 qrcode qrcode - npm 1.1、安装 yarn add qrcode 1.2、页面引入 import QRCode from qrcode; 1.3、方法里边使用 getQRCodeUrl(){ QRCode.toDataURL(hello world,{color: {dark:"#010599FF",light:"#FFBF60FF"}}).then((url) > {// 获…

基于Html+Css的图片展示25

准备项目 项目开发工具 Visual Studio Code 1.44.2 版本: 1.44.2 提交: ff915844119ce9485abfe8aa9076ec76b5300ddd 日期: 2020-04-16T16:36:23.138Z Electron: 7.1.11 Chrome: 78.0.3904.130 Node.js: 12.8.1 V8: 7.8.279.23-electron.0 OS: Windows_NT x64 10.0.19044 项目…

Linux+云服务器

目录 前言 一、Linux介绍 二、Linux 环境搭建 2.1 云服务器 2.2 XShell 终端 三、Linux 常用命令 3.1操作目录的命令 3.1.1 ls 【list的缩写】 双击某个目录 3.1.2 pwd 【print working directory的缩写】打印当前所处地址 3.1.3 cd 【change directory的缩写】切…

yolov5训练自己的目标检测模型

yolov5训练自己的目标检测模型 1.克隆项目并配置环境 1.1克隆项目 进入GitHub下载yolov5源码 点此进入 选择分支v5.0&#xff0c;并下载源码 anaconda激活相应环境 activate pytorch进入项目存放的地址 E: cd yolov5-master1.2 yolov5项目结构 ├── data&#xff1a;主…