type
status
date
slug
summary
tags
category
icon
password
 

引言

当谈论数据分析和数据可视化时,Matplotlib是一个强大的工具,它不仅提供了丰富的功能,还允许用户创建高质量的图形和图表。本篇博客旨在帮助你掌握Matplotlib的基础知识和高级技巧,以便你能够有效地利用它来展示数据、解释趋势和传达信息。
在这篇博客中,我们将深入探讨Matplotlib的各个方面,从数据可视化的基础开始,包括折线图、散点图、条形图、直方图和饼图等,一直到更高级的图形元素,如图形注释、箭头、图例高级用法、区域填充和阴影效果。我们还将学习如何创建三维数据可视化、动画和交互式控件,以及如何导出图形文件、设置图形风格和自定义色彩和配色方案。
本文提供了各种示例代码,图像就不提供出来了,简单示例可以通过复制代码运行获得图像
原因:个人采用的是github图床,利用jsDelivr 提供的全球 CDN 加速
github 和jsdelivr 都有大小限制: GitHub 图床仓库大小不能超过1G。 因为GitHub 原则上是反对仓库图床化的,当仓库超过1G 后会有人工审核仓库内容,如果发现用来做图床,轻则删库重则封号
当然,主要还是简单图例我觉得太多,太麻烦......放重点图例吧哈哈

1. Matplotlib 简介和安装

  • Matplotlib简介:Matplotlib是Python中最常用的数据可视化库之一,用于创建静态、动态、交互式图表。
  • 安装Matplotlib:使用pipconda可以轻松安装Matplotlib。
示例代码:

2. Matplotlib 绘图原理

  • 绘图原理:Matplotlib采用面向对象的方式来创建图表。所有图表元素都是对象,从Figure对象到Axes对象,都是构建图表的关键部分。

3. Matplotlib 常用模块和函数

pyplot 模块

  • pyplot简介pyplot是Matplotlib的一个子模块,提供了一种类似于MATLAB的界面,用于绘制图表。
示例代码:

Figure 对象和子图

  • Figure对象Figure对象是图表的顶层容器,用于容纳图表中的所有元素。
  • 子图:子图是Axes对象的容器,用于在一个Figure对象中容纳多个图表。
示例代码:

Axes 对象和坐标系

  • Axes对象Axes对象是图表的主要绘图区域,用于绘制数据点、线条、文本等。
  • 坐标系Axes对象具有X和Y坐标轴,你可以在坐标轴上绘制数据。
示例代码:

图形属性设置

  • 线条样式:通过linestyle参数设置线条样式。
  • 颜色:通过color参数设置线条颜色。
  • 标记点:通过marker参数设置标记点样式。
示例代码:

文本标注和注释

  • 添加文本标注:使用text()函数在图表中添加文本标注。
  • 添加注释:使用annotate()函数添加带箭头的注释。
示例代码:

4.折线图绘制

单条折线图

绘制一个简单的单条折线图。
  • plt.plot(x, y, label='Line 1', marker='o', linestyle='-', color='blue'):这行代码绘制了折线图。xy分别是X轴和Y轴的数据,label用于设置图例标签,marker指定标记点的样式,linestyle设置线条样式,color设置线条颜色。
  • plt.title('单条折线图'):添加标题。
  • plt.xlabel('X轴')plt.ylabel('Y轴'):添加X轴和Y轴的标签。
  • plt.legend():显示图例。
  • plt.show():显示图表。

多条折线图

绘制多条折线图。

5.散点图绘制

散点图基本绘制

绘制一个基本的散点图。
  • plt.scatter(x, y, label='Data Points', color='blue', marker='o'):这行代码绘制了散点图。xy分别是X轴和Y轴的数据,label用于设置图例标签,color设置散点的颜色,marker指定散点的样式。

散点图颜色映射

使用颜色映射来为散点图中的数据点添加颜色。下面是一个带有颜色映射的散点图示例:
  • c=colors:通过c参数指定颜色数据。
  • cmap='viridis':通过cmap参数指定颜色映射。

散点图大小映射

根据数据的大小来映射散点的大小。下面是一个带有大小映射的散点图示例:
  • s=sizes:通过s参数指定大小数据。
  • alpha=0.7:通过alpha参数设置散点的透明度。

6.条形图绘制

水平条形图

绘制一个水平条形图。
  • plt.barh(categories, values, color='skyblue'):这行代码绘制了水平条形图。categories是类别标签,values是条形的值,color设置条形的颜色。

垂直条形图

绘制一个垂直条形图。
  • plt.bar(categories, values, color='salmon'):这行代码绘制了垂直条形图,参数设置与水平条形图类似。

分组条形图和堆积条形图

分组条形图和堆积条形图可以通过调整数据和条形的宽度来创建。以下是一个示例:
  • plt.bar(x - width/2, values1, width, label='Group 1', color='skyblue'):这行代码绘制了两组分组条形图。x - width/2用于确定第一组的位置,x + width/2用于确定第二组的位置。

7.直方图绘制

单变量直方图

绘制一个单变量直方图,以探索单个变量的分布。
  • plt.hist(data, bins=20, color='skyblue', edgecolor='black'):这行代码绘制了单变量直方图。data是要分析的数据,bins参数指定了直方图的箱数,color设置直方图的颜色,edgecolor设置边界颜色。

双变量直方图

绘制一个双变量直方图,用于探索两个变量之间的关系。
  • plt.hist2d(x, y, bins=20, cmap='viridis'):这行代码绘制了双变量直方图。xy是两个变量,bins参数指定了直方图的箱数,cmap参数设置颜色映射。

直方图密度曲线

直方图密度曲线也被称为核密度估计,它可用于估计数据的连续概率密度。
  • plt.hist(data, bins=20, density=True, color='skyblue', alpha=0.7, edgecolor='black'):这行代码绘制了直方图,density=True参数将频率转换为密度。
  • norm.fit(data):使用正态分布拟合数据以绘制密度曲线。
  • norm.pdf(x, mu, std):使用正态分布的概率密度函数绘制密度曲线。

8.饼图绘制

基本饼图

绘制一个基本的饼图,以表示数据占比。
  • plt.pie(sizes, labels=labels, colors=colors, autopct='%1.1f%%', startangle=90):这行代码绘制了基本饼图。sizes是数据占比,labels是每个切片的标签,colors是切片颜色,autopct用于在饼图中显示百分比,startangle指定饼图的起始角度。

饼图切片突出和排序

可以通过突出某个切片来强调数据,也可以通过排序来改变切片的顺序。
  • explode = (0, 0.1, 0, 0):通过explode参数,我们突出了切片 B。
  • shadow=True:为饼图添加阴影效果。

饼图标签和百分比

可以在饼图上添加标签和百分比。
  • autopct='%1.1f%%':通过autopct参数,我们在饼图中显示百分比。
  • pctdistance=0.85:通过pctdistance参数,我们调整了百分比标签的位置。

9.坐标系

轴范围和刻度设置

可以使用plt.xlim()plt.ylim()函数设置X轴和Y轴的范围,并使用plt.xticks()plt.yticks()函数设置刻度。
  • plt.xlim(0, 10):通过plt.xlim()函数,我们设置了X轴范围为0到10。
  • plt.ylim(-1, 1):通过plt.ylim()函数,我们设置了Y轴范围为-1到1。
  • plt.xticks(np.arange(0, 11, 2)):通过plt.xticks()函数,我们设置了X轴的刻度为0到10,步长为2。
  • plt.yticks([-1, -0.5, 0, 0.5, 1]):通过plt.yticks()函数,我们设置了Y轴的刻度为指定的值。

轴标签和标题

可以使用plt.xlabel()plt.ylabel()函数设置X轴和Y轴的标签,使用plt.title()函数设置标题。
  • plt.xlabel('X轴'):通过plt.xlabel()函数,我们设置了X轴的标签。
  • plt.ylabel('Y轴'):通过plt.ylabel()函数,我们设置了Y轴的标签。
  • plt.title('坐标系标签和标题设置'):通过plt.title()函数,我们设置了图表的标题。

网格线设置

可以使用plt.grid()函数来设置网格线的显示和样式。
  • plt.grid(True):通过plt.grid()函数,我们启用了网格线。

10.图形布局

子图分割和排列

使用plt.subplot()函数来创建和排列子图。此函数的参数包括行数、列数和子图的索引。
在这个示例中,创建了一个2x2的子图布局,并在每个子图中绘制了不同的数据。plt.subplot()函数用于选择要绘制的子图,使用plt.title()函数为每个子图添加标题。plt.tight_layout()用于自动调整子图的间距,以确保它们适合图表。

坐标系网格布局

Matplotlib还允许在单个图形中创建多个坐标系,以更复杂的方式排列它们。
在这个示例中,使用plt.subplots()创建了一个包含2x2坐标系的图形,然后在每个坐标系中绘制了不同的数据。最后,plt.tight_layout()用于自动调整坐标系之间的间距。

11.多轴图绘制

共享轴和独立轴

使用plt.subplots()函数创建具有共享或独立轴的多轴图。

共享轴

在这个示例中,创建了一个具有共享X轴的多轴图,两个子图共享相同的X轴。

独立轴

在这个示例中,创建了一个具有独立Y轴的多轴图,两个子图具有不同的Y轴。

双坐标系图和次坐标轴

使用twinx()函数创建双坐标系图,允许在同一图中绘制具有不同Y轴的数据。
在这个示例中,创建了一个双坐标系图,同时绘制了两个数据集,每个数据集具有不同的Y轴。使用ax1.twinx()来创建第二个Y轴,并在同一图中绘制两个数据集。

次坐标轴

使用secondary_xaxis()secondary_yaxis()函数来创建次坐标轴,以表示不同尺度的数据。这通常用于在同一图中显示不同单位的数据。

12.高级图形元素

图形注释和箭头

使用plt.annotate()函数添加图形注释和箭头。
在这个示例中,我们使用plt.annotate()函数在数据点 (2, 4) 处添加了一个注释文本,并使用箭头指向 (2.5, 5) 处。

图例高级用法

Matplotlib的图例允许自定义图例的位置、标签、颜色等属性。
在这个示例中,使用plt.legend()函数自定义了图例的位置、标题、标题字体大小和图例项的字体大小。

区域填充和阴影效果

使用fill_between()函数来填充区域和创建阴影效果。
在这个示例中,使用plt.fill_between()函数填充了两个数据集之间 sin(x) > cos(x) 的区域,并为填充区域添加了颜色和透明度。添加了图例以标识填充区域。

13.3D数据可视化

三维散点图和曲面图

使用Axes3D子模块来创建三维散点图和曲面图。

三维散点图

在这个示例中,使用Axes3D子模块创建了一个三维散点图,其中 xyz 是随机生成的数据。

三维曲面图

在这个示例中,用Axes3D子模块创建了一个三维曲面图,其中 xy 是网格化的坐标,z 是一个函数的值。

等高线图和热力图

Matplotlib允许创建三维等高线图和热力图,用于可视化等高线和数据热力分布。

三维等高线图

在这个示例中,用Axes3D子模块创建了一个三维等高线图。

热力图

这个示例演示了如何创建热力图,其中 data 是一个矩阵。

3D 动画和交互式控件

Matplotlib还支持3D动画和交互式控件,允许你创建交互式的三维图形。

14.图形导出和美化

导出图形文件

使用Matplotlib将图形保存为各种文件格式,如PNG、JPG、SVG、PDF等。
在这个示例中,用plt.savefig()函数将图形保存为PNG和PDF文件,可以使用不同的文件扩展名来指定不同的文件格式。

图形风格设置

Matplotlib允许设置图形的风格,包括背景、网格线、字体和刻度等。
在这个示例中,用plt.style.use()函数设置了图形的风格为seaborn-darkgrid,选择不同的风格来自定义图形外观。

自定义色彩和配色方案

自定义色彩和配色方案,以满足特定的需求。
在这个示例中,自定义的颜色列表colors来为每个数据点选择不同的颜色。

参考

解读IMDb电影Top250-电影数据探索python数据分析-numpy
宓翊23
宓翊23
博学而笃志,切问而近思~ 爱探索,热爱技术的Geek一枚~
Announcement
type
status
date
slug
summary
tags
category
icon
password
🎉欢迎来到我的博客🎉
工具-资源-技术-随笔
--- 感谢您的支持 ---
👏希望能帮助到您👏
主博客:作者站点中的bevis23