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:使用
pip
或conda
可以轻松安装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')
:这行代码绘制了折线图。x
和y
分别是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')
:这行代码绘制了散点图。x
和y
分别是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')
:这行代码绘制了双变量直方图。x
和y
是两个变量,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
子模块创建了一个三维散点图,其中 x
、y
和 z
是随机生成的数据。三维曲面图
在这个示例中,用
Axes3D
子模块创建了一个三维曲面图,其中 x
和 y
是网格化的坐标,z
是一个函数的值。等高线图和热力图
Matplotlib允许创建三维等高线图和热力图,用于可视化等高线和数据热力分布。
三维等高线图
在这个示例中,用
Axes3D
子模块创建了一个三维等高线图。热力图
这个示例演示了如何创建热力图,其中
data
是一个矩阵。3D 动画和交互式控件
Matplotlib还支持3D动画和交互式控件,允许你创建交互式的三维图形。
14.图形导出和美化
导出图形文件
使用Matplotlib将图形保存为各种文件格式,如PNG、JPG、SVG、PDF等。
在这个示例中,用
plt.savefig()
函数将图形保存为PNG和PDF文件,可以使用不同的文件扩展名来指定不同的文件格式。图形风格设置
Matplotlib允许设置图形的风格,包括背景、网格线、字体和刻度等。
在这个示例中,用
plt.style.use()
函数设置了图形的风格为seaborn-darkgrid
,选择不同的风格来自定义图形外观。自定义色彩和配色方案
自定义色彩和配色方案,以满足特定的需求。
在这个示例中,自定义的颜色列表
colors
来为每个数据点选择不同的颜色。参考
matplotlib官网:https://matplotlib.org/stable/users/index
- Author:宓翊23
- URL:https://miyiblog.top//article/python-data-analysis-with-matplotlib
- Copyright:All articles in this blog, except for special statements, adopt BY-NC-SA agreement. Please indicate the source!
Relate Posts