【Python进阶】带你使用Matplotlib进行可视化

利用matplotlib对数据进行可视化展示 绘制饼状图 import matplotlib.pyplot as plt edu = ['0.2515','0.3724','0.3336','0.0368','0.0057'] labels = ['中专','大专','本科','硕士','其他'] plt.rcParams['font.sans-serif'] = ['Arial Unicode MS']#使图像中可以显示中文 explode =[0,0,0,0.1,0]#将硕士块突出,拉离中心0.1 plt.pie(x=edu,explode = 阅读详情

欢迎来到专栏《Python进阶》。在这个专栏中,我们会讲述Python的各种进阶操作,包括Python对文件、数据的处理,Python各种好用的库如NumPy、Scipy、Matplotlib、Pandas的使用等等。我们的初心就是带大家更好的掌握Python这门语言,让它能为我所用。

今天是《Python进阶》专栏的第五期,在本期中,我们将主要介绍如何使用Matplotlib这个第三方库进行数据可视化。

作者&编辑 | 汤兴旺

“美丽的可视化可反映出所描述数据的品质,显式地揭示出源数据中内在和隐式的属性和关系,读者了解了这些属性和关系之后,可以因此而获取新的知识、洞察力和乐趣。”

以上是书籍《数据可视化之美》对可视化的解读。说的很有道理,相信大家听说过“一图胜千言”这句话,当看到一堆数据时,若你对数字不够敏感,肯定会费劲半天找不到规律,但若用一张图来表达时,相信你一定会一目了然。下面我就大家使用Matplotlib对数据进行美丽的可视化。

1 Matplotlib 的基本操作

在Matplotlib中有三个基本概念,分别是Figure、axes和axis。

下面我来详细解释下这三个基本概念。在Matplotlib中,figure你可以理解成一个画布或者一个窗口,axes是指画布上的一个区域,你画的图就在这个区域上。你可以把figure看成一张白纸,在纸上的任何区域画图,确定画图区域并确定作图的一些方式的东西的就是axes,即坐标对象(坐标系)。

由于在一张白纸上可以有几个区域进行画图,另外画图区域必须存在于白纸上才有意义。因此在figure上可有多个axes,axes必在figure上,要画图必有axes。

另外axis就是我们平时常见的坐标轴,如x轴、y轴等。

对于上面的概念我们可以用下图进行直观理解。

640?wx_fmt=png

通过上面的讲解,我们知道在Matplotlib中的图像都位于figure画布中,因此可以使用plt.figure创建一个新画布。如果要在一个图表中绘制多个子图,可使用subplot。


话不多说,我们直接看下面代码:

import matplotlib.pyplot as plt

ax4 = fig.add_subplot(2, 2, 4)

640?wx_fmt=png

首先,创建了一个figure,然后在这个figure上画了四个区域,即四个子图,分别是直方图、三点图、折线图,还有一个是只有坐标轴的图。

如果我想要画多个figure应该怎么办呢?实际上如果要同时绘制多个图表,可以给figure()传递一个整数参数指定figure对象的序号。如下例所示:

import matplotlib.pyplot as plt

import numpy as np

plt.figure(1)  # 创建图表1

plt.figure(2)  # 创建图表2

ax1 = plt.subplot(211)  # 在图表2中创建子图1

ax2 = plt.subplot(212)  # 在图表2中创建子图2

x = np.linspace(0, 3, 100)

for i in range(5):

    plt.figure(1)  # 选择图表1

    plt.plot(x, np.exp(i * x / 3))

    plt.sca(ax1)  # 选择图表2的子图1

    plt.plot(x, np.sin(i * x))

    plt.sca(ax2)  # 选择图表2的子图2

    plt.plot(x, np.cos(i * x))

plt.show()

执行完上面代码后,如下图。

640?wx_fmt=png

640?wx_fmt=png

2 Matplotlib的进阶操作

在1中的两个示例中,我们会发现手动创建figure,都使用了plt.figure()。如果没有plt.figure()可以吗?请看下面的示例:

import matplotlib.pyplot as plt

import numpy as np

x = np.linspace(-np.pi, 5*np.pi, num = 100)

y = np.sin(x)

plt.plot(x,y)

plt.show()

640?wx_fmt=png

我们会发现这段代码中,没有plt.figure()也画出了图,WHY?难道前面误导了大家?我在前面说过,若没有figure就没有axes!

当然这个锅我不背,实际上这里plt.plot()是通过plt.gca()获得当前axes对象的ax,如果没有会自动创建一个,可以理解为就是figure。然后再调用ax.plot方法实现真正的绘图。

Matplotlib实际上是一套面向对象的绘图库,它所绘制的图表中每个图表元素,如线条 Line2D、文字Text、刻度等在内存中都有一个对象与之对应。为将面向对象的绘图库包装成只使用函数的调用接口,pyplot模块内部保存了当前图表以及当前子图等信息。当前的图表和子图可以使用plt.gcf()和plt.gca()获得,分别表示"Get Current Figure"和"Get Current Axes"。在pyplot模块中,许多函数都是对当前的figure或axes对象进行处理,比如说:

plt.plot()实际上会通过plt.gca()获得当前的axes对象ax,然后再调用ax.plot()方法实现真正绘图。

2.1 对图进行装扮

上面3个示例中均没有展示图例、标注等,下面我们通过下面的示例来分享如何对一个图进行装扮。

import matplotlib.pyplot as plt

import numpy as np

fig, ax1 = plt.subplots(figsize=(8, 4))

r = np.linspace(0, 10, 100)

a = 4 * np.pi * r ** 2  # area

v = (4 * np.pi / 3) * r ** 3  # volume

ax1.set_title("surface area and volume of a sphere", fontsize=16)

ax1.set_xlabel("radius [m]", fontsize=16)

ax1.plot(r, a, lw=2, color="blue")

ax1.set_ylabel(r"surface area ($m^2$)", fontsize=16, color="blue")

for label in ax1.get_yticklabels():

    label.set_color("blue")

ax2 = ax1.twinx()

ax2.plot(r, v, lw=2, color="red")

ax2.set_ylabel(r"volume ($m^3$)", fontsize=16, color="red")

for label in ax2.get_yticklabels():

    label.set_color("red")

fig.tight_layout()

plt.show()

640?wx_fmt=png

在上面的示例中我们通过set.title()设置了图的标题,通过set_xlabel和set_ylabel设置了y轴的标签,另外也通过get_yticklabels()和get_xticklabels()设置了坐标轴上刻度的不同的属性。

2.2、对图的某个细节进行放大


平时我们在处理图的时候,有时候需要对图的局部细节进行查看,这时候就需要对细节进行放大,对于这个问题该怎么解决呢?请看下面的案例:

import matplotlib.pyplot as plt

640?wx_fmt=png

如果我想要对上图的横纵标在4附近的局部峰值进行放大查看,即下图圈红部分进行放大查看,应该如何操作呢?

640?wx_fmt=png

代码如下:

import matplotlib.pyplot as plt

import numpy as np

import matplotlib as mpl

fig = plt.figure(figsize=(8, 4))

def f(x):

    return 1 / (1 + x ** 2) + 0.1 / (1 + ((3 - x) / 0.1) ** 2)

def plot_and_format_axes(ax, x, f, fontsize):

    ax.plot(x, f(x), linewidth=2)

    ax.xaxis.set_major_locator(mpl.ticker.MaxNLocator(5))

    ax.yaxis.set_major_locator(mpl.ticker.MaxNLocator(4))

    ax.set_xlabel(r"$x$", fontsize=fontsize)

    ax.set_ylabel(r"$f(x)$", fontsize=fontsize)

ax = fig.add_axes([0.1, 0.15, 0.8, 0.8], facecolor="#f5f5f5")

x = np.linspace(-4, 14, 1000)

plot_and_format_axes(ax, x, f, 18)

x0, x1 = 2.5, 3.5

ax = fig.add_axes([0.5, 0.5, 0.38, 0.42], facecolor='none')

x = np.linspace(x0, x1, 1000)

plot_and_format_axes(ax, x, f, 14)

plt.show()

640?wx_fmt=png

代码区红色部分即实现放大部分的代码。实际是添加了另外一个axes,只不过这个axes包含在主图的axes中。

总结

本期我们介绍了Matplotlib中的一些应用,希望您能借助这个工具画出精美的图表。

下期预告:Python库Pandas的高级应用

知识星球推荐

640?wx_fmt=png

有三AI编程与开源框架知识星球由我亲自维护,内设caffe实战,Python实战,Python每日一练,Pytorch实战、C++每一一练等板块。近期我重点更新caffe的实战教程,包括模型定义、数据处理、源码解读、定制自己的caffe等等,欢迎大家了解加入,我们一起攻破编程与开源框架。

转载文章请后台联系

侵权必究

640?wx_fmt=png

640?wx_fmt=png

640?wx_fmt=png

往期精选

一文带你入门Python中的Matplotlib模块 Matplotlib支持多种样式和自定义选项,用户可以根据自己的需求来调整图表的样式和外观。以下是几种常用的样式和自定义选项:1. 颜色和线型2. 标题和标签3. 图例4. 坐标轴范围除此之外,Matplotlib还支持多种自定义选项,比如字体、图表大小、背景颜色等。四、Matplotlib的优缺点Matplotlib作为Python中最常用的可视化库之一,具有以下优点:功能丰富,支持多种类型的图表绘制。易于使用,提供了丰富的API和样式选项。可扩展性强,支持多种插件和扩展库。 阅读详情

相关推荐

【Python进阶】数据可视化:Matplotlib从入门到实战

本文通过12个实用案例,系统讲解Matplotlib的核心功能,涵盖基础图表、高级定制、3D可视化等场景,帮助初学者快速掌握科研级绘图技能。

赶紧的博客 1808

Matplotlib 学习笔记

注:该文是上了开智学堂数据科学基础班的课后做的笔记,主讲人是肖凯老师。 数据绘图 数据可视化的原则 为什么要做数据可视化? 为什么要做数据可视化?因为可视化后获取信息的效率高。为什么可视化后获取信息的效率就高?因为人眼是个高带宽的巨量信号输入并行处理器,具有超强的模式识别能力,对可视符号的感知速度比对数字或文本快多个数量级,而可视化就是迎合了人眼的这种特点,才使得获取信息难度大大降低...

dengxun7056的博客 334

LayaNative源码编译

修改好后的LayaNative2.0需要重新编译生成Android和iOS所需要的动态库文件。

末之 1360

数据科学---使用Matplotlib进行数据可视化

数据科学---使用Matplotlib进行数据可视化

Zesheng_Wang的博客 4978

SAP生产订单(创建-下达-发料-报工-入库)全流程及反向流程

SAP创建下达报工入库发料以及取消发料取消入库,批量下达删除关闭,生产订单出入库查询和状态更改查询记录

weixin_38974136的博客 2万+

【科研建模】Pycaret自动机器学习框架使用流程及多分类项目实战案例详解

对pycaret的使用流程进行梳理,并详细介绍了基于多分类预测的案例

lys_828的博客 782

Matplotlib可视化及应用

参考:https://www.jianshu.com/p/db2e28201835

ycs_0405的专栏 836

解决开着代理情况下pip或魔搭下载失败

最近由于经常配环境导致,老是要来回切clash关掉代理,非常的不方便如下面的,魔搭模型下载失败如下面的,pip换源后下载失败。

风吹落叶的博客 2950

python利用matplotlib库进行简单的数据可视化分析

本篇利用python中的matplotlib库进行简单的数据可视化分析,数据来源于博客园中《2020年4月中国编程语言排行榜程序员工资统计,人工智能工资大跌》 数据描述 数据处理过程 饼状图:引入matplotlib库之后,设置中文显示,定义画布的大小。最后定义饼状图的标签以及设定各项离心n个半径,将数据放到一个列表之中,然后直接绘制饼图,并且设置哥哥扇形的颜色,使得图形看起来更加直观,最后定义饼状图标题,展示图形并保存。 直方图:引入库后设置中文显示,打开csv文件,提取csv的第一列,即编程语言的种类

weixin_48874360的博客 1954

python基础:工作会用到的90%的python代码都在这了(万字详解!)

Python 备忘单是 Python 3 编程语言的单页参考表 著名的“Hello World”程序在 Python 中的实现 Python 不能在没有赋值的情况下声明变量 变量可以存放不同类型的值 内置数据类型 序列指一批有序的元素,集合指一批无序且不重复的元素查看: 数据类型 查看: 字符串 查看: 列表 查看: 判断 查看: 循环 查看: 函数 查看: 文件处理 表示 x 和 y 的商, 表示 x 和 y 的底商,另见 StackOverflow f-字符串 (Python 3.6+) 查看

数据知道的博客 1万+

华为OD机试双机位C卷-统计差异值大于相似值二元组个数(C/C++/Py/Java/Js/Go)

华为OD机试(机考)双机位C卷 【统计差异值大于相似值二元组个数】,提供Java、C++、Python、Go、JavaScript源码实现,并提供完整思路讲解,以及在线OJ模拟做题。华为OD机试 - 统计差异值大于相似值二元组个数

qq_45776114的博客 784

python 刻度名字 画图_【Python进阶】带你使用Matplotlib进行可视化

欢迎来到专栏《Python进阶》。在这个专栏中,我们会讲述Python的各种进阶操作,包括Python对文件、数据的处理,Python各种好用的库如NumPy、Scipy、Matplotlib、Pandas的使用等等。我们的初心就是带大家更好的掌握Python这门语言,让它能为我所用。今天是《Python进阶》专栏的第五期,在本期中,我们将主要介绍如何使用Matplotlib这个第三方库...

weixin_39565390的博客 260

SAM3 几行代码支持任意图像分辨率,减少显存占用(针对transformers库)

几行代码让sam3支持任意图像分辨率

qq_41234663的博客 156

​Matplotlib使用指南,100个案例从入门到进阶!(附源代码)

大家好,今天来跟大家分享下 Matplotlib 从入门到进阶的精彩内容。Matplotlib 是 Python数据科学生态系统中非常重要的一个 Python库,是 Python可视化中使用最多,同时其他许多可视化库也是在这个基础上衍生或延展而来的。从下面这张图,可以看出 Matplotlib 在 Python可视化生态系统中的强大之处。因此,熟练使用 Matplotli...

Python数据之道 990

在 ABAP 世界把 SAML 2.0 玩明白:跨域 SSO 的通信模式、配置路径与落地实践

摘要 SAML 2.0是ABAP平台实现标准化SSO的推荐方案,提供Front-Channel(浏览器传递SAML报文)和Back-Channel(使用工件绑定通过SOAP兑换断言)两种通信方式。前者包括HTTP Redirect和POST绑定,后者通过Artifact绑定提升安全性。配置重点包括:激活ICF服务、使用SAML2事务码建立信任、设置用户标识映射、选择绑定方式(POST易调试、Artifact更安全)及配置安全策略(签名/加密)。典型流程包括SP-initiated和IdP-initiated

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 294

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

Python数据可视化之matplotlib绘图教程

本文详细介绍了Matplotlib的用法,包括绘制基本统计图、复杂的图形及各种参数的设置。

QQVQQ的博客 1万+

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

Python开发从入门到精通:数据可视化进阶与Matplotlib高级应用

本文介绍了Python数据可视化进阶技巧与Matplotlib高级应用。主要内容包括:数据可视化概述及其重要性,常见工具如Matplotlib、Seaborn等;图表样式自定义(标题、标签、网格、图例);多图表组合(子图、嵌套);交互式图表(Plotly、Bokeh);3D图表(折线图、散点图);最后通过实战案例展示数据可视化分析应用开发流程,涵盖数据读取、预处理、多种图表绘制及保存功能。文章提供了丰富的代码示例,帮助读者掌握高级数据可视化技能。

编程世界如山海,探索不止。 2万+

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

30000字 Matplotlib 实操干货,38个案例带你从入门到进阶!

译文出品:Python数据之道原文作者:Rizky Maulana Nurhidayat翻译:LemonMatplotlib 实操干货,38个案例带你从入门到进阶!「Python数据之道...

Python数据之道 1677

Python可视化: Matplotlib

什么是 Matplotlib?Matplotlib是Python中最流行的2D绘图库,可以创建各种静态、动态和交互式可视化图表。它提供了类似MATLAB的绘图接口,广泛应用于数据分析和科学计算领域。Matplotlib 的安装如果您的系统上已经安装了和使用命令安装它:C:\Users\Your Name导入Matplotlib Pyplot大多数 Matplotlib 实用程序位于pyplot子模块下,通常以别名导入plt什么是 NumPy?NumPy 是一个用于处理数组的 Python 库。

2401_87410795的博客 2056

Python 如何在 Web 环境中使用 Matplotlib 进行数据可视化

Matplotlib 是一个强大的 Python 绘图库,能够创建高质量的图表。它支持多种图表类型,如折线图、散点图、柱状图、饼图等,并且可以自定义图表的样式和属性。灵活性:可以自定义图表的每一个细节。多样性:支持多种图表类型和格式。易用性:拥有清晰的 API 和良好的文档。虽然 Matplotlib 在桌面环境中非常强大,但在 Web 环境中使用时,可能需要进行一些额外的配置。本文介绍了如何在 Web 环境中使用 Matplotlib 进行数据可视化。

chusheng1840的博客 2719

使用 Python 进行数据可视化之Matplotlib

在当今世界,我们每天都会产生大量数据。有时要分析某些趋势的数据,如果数据是原始格式,模式可能会变得困难。为了克服这种数据可视化发挥作用。数据可视化提供了良好的、有组织的数据图形表示,使其更易于理解、观察和分析。在本系列教程中,我们将讨论如何使用 Python 可视化数据。

努力是为了站在万人之中,成为别人的光 1万+

Python可视化实战:使用Matplotlib创建精美图表

为了使图表更具吸引力,我们可以对样式进行自定义。比如改变线条的颜色、宽度,或者添加网格线等。# 更改线条样式# 添加网格线# 调整坐标轴范围# 显示图表plt.show()通过调整颜色、线条样式和宽度,我们使图表看起来更加专业。同时,网格线和坐标轴范围的设置也让图表更加易于阅读。在Python与Matplotlib的世界里,每一次绘图都是一次探索未知的旅程。无论你是初学者还是经验丰富的数据科学家,Matplotlib都将是你值得信赖的伙伴。让我们一起踏上这场精彩的旅途吧!嘿!

master_chenchen的博客 1231

Python 数据可视化之 Matplotlib 库

本文系统介绍了Python数据可视化库Matplotlib的核心功能和应用方法。作为Python生态中最基础强大的绘图工具,Matplotlib支持多种图表类型(折线图、散点图、柱状图等)和高级定制功能。文章从安装导入、基本绘图、图表类型详解到高级设置(图形大小、多图绘制、样式主题等)进行了全面讲解,并介绍了与Seaborn、Pandas等库的整合应用。通过丰富的代码示例,帮助读者掌握从基础到进阶的Matplotlib使用技巧,适用于科研、教学和工业级数据可视化需求。

2201_75607087的博客 2070

【干货】Python使用matplotlib实现数据可视化

前言 俗话说得好,一图胜千言。数据可视化是数据科学中的一个重要部分。创建可视化很简单,但是创建优秀的可视化很难。 数据可视化有两种主要用途:探索数据和交流数据。 matplotlib 现在有很多工具都可以用来可视化数据,比如我们常用的Excel,还有数据科学另一门重要的语言R,以及百度的Echarts等可视化工具。今天我们的主角是Python中的ma...

数据之魅的博客 4303

Python进阶:使用Matplotlib进行数据可视化(一)

简介 优快云 编辑时,图片容易缺失,可关注「懒编程」获得更好的阅读体验。 数据可视化是让我们感知数据的一种重要手段,通过不同的数据可视化的方式,使得我们可以在不同维度去理解当前的数据。 数据可视化的基本原理就是,人脑对色块的敏感性远大于数字,从演化论角度来讲,可以很好的分辨出不同颜色事物的祖先更容易活下来,而数字,那个时候并没有,所以进化而来的大脑并不擅长处理数字,进而对干巴巴的数据不敏感。 本...

weixin_30230009的博客 1464

Matplotlib数据可视化进阶

本文其实属于:Python的进阶之道【AIoT阶段一】的一部分内容,本篇把这部分内容单独截取出来,方便大家的观看,本文介绍Matplotlib数据可视化进阶,读本文之前,如果没有 Matplotlib基础建议先看博客:Matplotlib数据可视化入门,Matplotlib数据可视化高级。学习本文之前,需要先自修:NumPy从入门到进阶,pandas从入门到进阶,本文中很多的操作在 NumPy从入门到进阶 ,pandas从入门到进阶二文中有详细的介绍,包含一些软件以及扩展库,图片的安装和下载流程,本文会直接

佛系更新 4859
上一篇: 【NLP】如何系统性的学习NLP,有三AI-NLP知识星球等你来
下一篇: 【杂谈】手把手带你配置深度学习环境
言有三
言有三 领域专家: 人工智能技术领域 领域专家: 人工智能技术领域
博客等级 码龄15年 3635粉丝 976原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

言有三

三人行必有AI

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值