Matplotlib及部分图像示例

文章目录

前言

如果某天你发现自己要学习 Matplotlib, 很可能是因为: 1、Matplotlib 是一个非常强大的 Python 画图工具;2、手中有很多数据, 可是不知道该怎么呈现这些数据。

一、Matplotlib是什么?

Matplotlib是一个Python 2D绘图库,它以多种硬拷贝格式和跨平台的交互式环境生成出版物质量的图形。 Matplotlib可用于Python脚本,Python和IPython (打开新窗口)壳牌、木星 (打开新窗口)笔记本,Web应用程序服务器和四个图形用户界面工具包。
Matplotlib 尝试使容易的事情变得更容易,使困难的事情变得可能。 您只需几行代码就可以生成图表、直方图、功率谱、条形图、误差图、散点图等。
为了简单绘图,该 pyplot 模块提供了类似于MATLAB的界面,尤其是与IPython结合使用时。 对于高级用户,您可以通过面向对象的界面或MATLAB用户熟悉的一组功能来完全控制线型,字体属性,轴属性等。

二、Matplotlib基础知识

1.Matplotlib中的基本图表包括的元素

x轴和y轴

水平和垂直的轴线

x轴和y轴刻度

刻度标示坐标轴的分隔,包括最小刻度和最大刻度

x轴和y轴刻度标签

表示特定坐标轴的值

绘图区域

实际绘图的区域

2.hold属性

hold属性默认为True,允许在一幅图中绘制多个曲线;将hold属性修改为False,每一个plot都会覆盖前面的plot。

但是不推荐去动hold这个属性,这种做法(会有警告)。因此使用默认设置即可。

3.网格线

grid方法

使用grid方法为图添加网格线

设置grid参数(参数与plot函数相同)

.lw代表linewidth,线的粗细

.alpha表示线的明暗程度

4.axis方法

如果axis方法没有任何参数,则返回当前坐标轴的上下限

5.xlim方法和ylim方法

除了plt.axis方法,还可以通过xlim,ylim方法设置坐标轴范围

6.legend方法

两种传参方法:

【推荐使用】在plot函数中增加label参数

在legend方法中传入字符串列表

配置matplotlib参数

永久配置

matplotlib配置信息是从配置文件读取的。在配置文件中可以为matplotlib的几乎所有属性指定永久有效的默认值

安装级配置文件(Per installation configuration file)

Python的site-packages目录下(site-packages/matplotlib/mpl-data/matplotlibrc)

系统级配置,每次重新安装matplotlib后,配置文件会被覆盖

如果希望保持持久有效的配置,最好选择在用户级配置文件中进行设置

对本配置文件的最佳应用方式,是将其作为默认配置模板

用户级.matplotlib/matplotlibrc文件(Per user .matplotlib/matplotlibrc)

用户的Documents and Settings目录

可以用matplotlib.get_configdir()命令来找到当前用户的配置文件目录

三、部分示例

1.茎状图

茎图在从基线到头的每个位置绘制垂直于基线的线,并在那里放置一个标记。对于垂直茎图(默认),位置是x位置,头部是y值。对于水平茎图,位置是 y位置,头部是x值。
代码如下(示例):

import matplotlib.pyplot as plt
import numpy as np
#绘制x对应cos(x)的茎状图

#生成 0-2*pi间个数为10的等差数列
x = np.linspace(0.1, 2 * np.pi, 10)
#调用matplotlib.stem会返回3个对象。第一个是markerline,它是一个Line2D的实例,保存了表示火柴杆本身的线条的引用。它仅仅渲染了标记,不包括连接标记的线条。可以通过编辑该Line2D实例的属性让线条可见。最后一个对象baseline也是一个Line2D实例,保存了表示stemlines原点的水平线条的引用。返回的第二个对象是stemlines,它表示茎线的Line2D实例的集合(目前是Python列表)。
markerline, stemlines, baseline = plt.stem(x, np.cos(x), '-.')

设置线条属性 颜色为红 线宽为2
plt.setp(baseline, color='r', linewidth=2)
#显示输出
plt.show()

Matplotlib及部分图像示例

2.基本饼图

代码如下(示例):

import matplotlib.pyplot as plt

#饼图,切片将按逆时针方向排列和绘制
labels = 'athletics', 'basketball', 'golf', 'soccer'
sizes = [20, 45, 15, 20]
explode = (0, 0.1, 0, 0)  # 只让第二个元素爆炸突出 即baskerball
fig1, ax1 = plt.subplots()
ax1.pie(sizes, explode=explode, labels=labels, autopct='%1.1f%%',
        shadow=True, startangle=90)
#显示数值为小数点后一位 设置阴影为true 位置设置为90从正y轴开始逆向排列
ax1.axis('equal')  # 等长宽比确保饼图绘制为圆形
plt.show()

Matplotlib及部分图像示例

除了基本饼图外,此示例还显示了以下几个可选功能:
切片标签。
自动标记百分比。
用 explode 偏移切片。
投影。
自定义起始角度

3.直方图

要生成一维直方图,我们只需要一个数字矢量。对于二维直方图,我们需要第二个矢量。我们将在下面生成两者,并显示每个向量的直方图。

import matplotlib.pyplot as plt
import numpy as np
from matplotlib import colors
from matplotlib.ticker import PercentFormatter
修复随机状态以实现可重复性 随机数种子
np.random.seed(19680801)
N_points = 100000
n_bins = 20
生成正态分布 以x=0和y=5为中心
x = np.random.randn(N_points)
y = .4 * x + np.random.randn(100000) + 5
#设置子图行列、共享Y轴、自动调整子图参数(防止标签互相覆盖)
fig, axs = plt.subplots(1, 2, sharey=True, tight_layout=True)
axs[0].hist(x, bins=n_bins)  #设置第一个子图显示内容及宽度
axs[1].hist(y, bins=n_bins)  #设置第二个子图显示内容及宽度
plt.show()

def subplots(nrows=1, ncols=1, sharex=False, sharey=False, squeeze=True,
subplot_kw=None, gridspec_kw=None, **fig_kw):
参数

nrows,ncols:子图的行列数。
sharex, sharey:
设置为 True 或者 ‘all’ 时,所有子图共享 x 轴或者 y 轴,
设置为 False or ‘none’ 时,所有子图的 x,y 轴均为独立,
设置为 ‘row’ 时,每一行的子图会共享 x 或者 y 轴,
设置为 ‘col’ 时,每一列的子图会共享 x 或者 y 轴。
squeeze:
默认为 True,是设置返回的子图对象的数组格式。
当为 False 时,不论返回的子图是只有一个还是只有一行,都会用二维数组格式返回他的对象。
当为 True 时,如果设置的子图是(nrows=ncols=1),即子图只有一个,则返回的子图对象是一个标量的形式,如果子图有(N×1)或者(1×N)个,则返回的子图对象是一个一维数组的格式,如果是(N×M)则是返回二位格式。
subplot_kw:
字典格式,传递给 add_subplot() ,用于创建子图。
gridspec_kw:
字典格式,传递给 GridSpec 的构造函数,用于创建子图所摆放的网格。
class matplotlib.gridspec.GridSpec(nrows, ncols, figure=None, left=None, bottom=None, right=None, top=None, wspace=None, hspace=None, width_ratios=None, height_ratios=None)
如,设置 gridspec_kw={‘height_ratios’: [3, 1]} 则子图在列上的分布比例是3比1。
**fig_kw :
所有其他关键字参数都传递给 figure()调用。
如,设置 figsize=(21, 12) ,则设置了图像大小。

Matplotlib及部分图像示例

总结

Matplotlib的使用极大方便了我们的生活,使数据变得可视化成为一件轻松的事,我们可以用它去处理很多枯燥的数据并进行可视化,希望大家多多使用。
备注:上述示例只是Matplotlib中部分图像的示例,更多图像可以参考Matplotlib官网。

Original: https://blog.csdn.net/m0_59309923/article/details/124578342
Author: 秃头阿瑞
Title: Matplotlib及部分图像示例

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/766874/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球