入门matplotlib绘图这些知识别错过!

matplotlib绘图分析

在这里插入图片描述
解释:

  1. Figure:图形绘制的画板,他就相当于一个黑板,所有的图都是绘制在Figure上面。
  2. Axes:每个图都是Axes对象。一个Figure上可以有多个Axes对象。
  3. Axisx轴、y轴的对象。
  4. Tickx轴和y轴上的刻度对象。每一个刻度都是一个Tick对象。
  5. TickLabel:每个刻度上都要显示文字,这个文字的显示就是在TickLabel上。
  6. AxisLabelx轴和y轴的名称的文字显示。
  7. Legend:图例对象。
  8. TitleAxes图的标题对象。
  9. Line2D:绘制在Axes上的线条对象,比如折线图等。
  10. Reactangle:绘制在Axes上的矩形对象,比如条形图等。
  11. Marker:标记点,比如绘制散点图上的每个点就是这个对象。
  12. Artist:只要是绘制在Figure上的元素(包括Figure),都是Artist的子类。

一、Figure容器:

Figure容器是最顶层的容器,他几乎包含了这个图的所有对象。通过add_subplotadd_axes方法可以添加Axes对象,这两个方法添加的都是Axes及其子类的对象。添加完成后是存储在figure.axes中。

1.1. 添加Axes对象:

Figure只是一个黑板,如果想要绘图,需要先添加Axes。添加Axes可以通过add_axes和add_subplot来实现。示例代码如下:

import matplotlib.pyplot as plt
import numpy as np
import pandas as pd
from matplotlib import font_manager   #相关字体

fig = plt.figure()#创建figure对象
ax1 = fig.add_subplot(211)#211表示 创建的图为两(2)行一(1)列中的第一个(1),
ax2 = fig.add_axes([0.1, 0.1, 0.7, 0.3])# left,bottom,width,height  相关位置
print(ax1)
print('='*30)
print(ax2)
print('='*30)
print(fig.axes)

结果:
在这里插入图片描述
在这里插入图片描述

1.2. 操作当前Axes对象:

可以通过figure.gca以及figure.sca来设置和获取当前的axes对象。示例代码如下:
注意: 若我们直接使用plt.plot()方法实际上也是先获取当前的axes对象再进行相关操作

fig = plt.figure()
ax1 = fig.add_subplot(211)
ax2 = fig.add_axes([0,0,1,0.3])
print(fig.gca())#获取当前的axes对象,结果为ax2
print(fig.sca(ax1))#将当前的axes对象设置为ax1

结果:

Axes(0.1,0.1;0.7x0.3)
AxesSubplot(0.125,0.536818;0.775x0.343182)

1.3. 删除Axes对象:

Figure上的所有Axes对象都是保存在fig.axes中,但是如果想要删除某个Axes对象,那么必须通过delaxes来实现:

fig = plt.figure()
ax1 = fig.add_subplot(211)
ax2 = fig.add_axes([0,0,1,0.3])
fig.delaxes(ax1)
print(fig.axes)

结果:
[<matplotlib.axes._axes.Axes object at 0x0000016E9F881790>]
在这里插入图片描述

1.4. 获取所有的axes:

for ax in fig.axes:
    ax.grid(True) # 设置打开网格,可以对相关内容进行操作

1.5. Figure的属性有如下:

在这里插入图片描述

Figure类定义介绍:

https://matplotlib.org/api/_as_gen/matplotlib.figure.Figure.html#matplotlib.figure.Figure

二、Axes容器:

Axes容器是用来创建具体的图形的。比如画曲线,柱状图,都是画在上面。所以之前我们学的使用plt.xx绘制各种图形(比如条形图,直方图,散点图等)都是对Axes的封装。比如plt.plot对应的是axes.plot,比如plt.hist对应的是axes.hist。针对图的所有操作,都可以在Axes上找到对应的API。另外后面要讲到的Axis容器,是轴的对象,也是绑定在Axes上面。

Axes的类定义介绍:https://matplotlib.org/api/axes_api.html#matplotlib.axes.Axes

2.1. 设置x和y轴的最大值和最小值:

设置完刻度后,我们还可以设置x轴和y轴的最大值和最小值。可以通过set_xlim/set_ylim来实现:

fig = plt.figure()  
axes = fig.add_subplot(111)  
axes.plot(np.random.randn(10))

# 设置x轴的最大值和最小值
axes.set_xlim(-2,12)

# 设置y轴的最大值和最小值
axes.set_ylim(-3,3)

结果:
在这里插入图片描述

2.2. 添加文本:

之前添加文本我们用的是annotate,但是如果不是需要做注释,其实还有另外一种更加简单的方式,那就是使用text方法:

data = np.random.randn(10)
fig = plt.figure()
axes = fig.add_subplot(111)
axes.plot(data)
# 添加文本,比annotate更加方便
axes.text(0,0,"hello")#在(0,0)处增加hello注释

结果:
在这里插入图片描述

2.3. 绘制双Y轴:

ig = plt.figure()
ax1 = fig.add_subplot(211)
ax1.bar(np.arange(0,10,2),np.random.rand(5))
ax1.set_yticks(np.arange(0,1,0.25))
ax2 = ax1.twinx() #克隆一个共享x轴的axes对象,也可以改变x轴的数值
ax2.plot(np.random.randn(10),c="b")#c='b'表示颜色为blue
plt.show()

结果:
在这里插入图片描述

三、Axis容器:

Axis代表的是x轴或者y轴的对象。包含Tick(刻度)对象,TickLabel刻度文本对象,以及AxisLabel坐标轴文本对象。axis对象有一些方法可以操作刻度和文本等。

3.1. 设置x轴和y轴label的位置:

fig = plt.figure()
axes = fig.add_subplot(111)
axes.plot(np.random.randn(10))
axes.set_xlabel("x coordate")
# 设置x轴label的位置为(0.-0.1)
axes.xaxis.set_label_coords(0,-0.1)

结果:
在这里插入图片描述

3.2. 设置刻度上的刻度格式:

import matplotlib.ticker as ticker
fig = plt.figure()
axes = fig.add_subplot(111)
axes.plot(np.random.randn(10))
axes.set_xlabel("x coordate")
# 创建格式化对象
formatter = ticker.FormatStrFormatter('%.2f')#设置刻度格式为保留两位小数
# 设置格式化对象
axes.yaxis.set_major_formatter(formatter)

结果:

在这里插入图片描述

3.3. 设置轴的属性:

fig = plt.figure()

ax1 = fig.add_axes([0.1, 0.3, 0.4, 0.4])
ax1.set_facecolor('lightslategray')#axes背景

# 设置刻度上文本的属性
for label in ax1.xaxis.get_ticklabels():#遍历x轴文本
    # label是一个Label对象
    label.set_color('red')
    label.set_rotation(45)#倾斜角度
    label.set_fontsize(16)#字体大小

# 设置刻度上线条的属性
for line in ax1.yaxis.get_ticklines():#y轴线条
    # line是一个Line2D对象
    line.set_color('green')
    line.set_markersize(25)#大小
    line.set_markeredgewidth(3)#宽度

plt.show()

结果:
在这里插入图片描述

笔记:

  1. 图的构成:Figure是一个画板,上面可以有很多的axes对象,每个axes对象中有轴(Axis),有线条,有Legend,有title等。

  2. Figure上的相关操作,基本的都是对Axes的一些操作。

    • 添加axes:add_subplot(221)/add_axes([left,bottom,width,height])
    • 当前的axes:fig.gca()获取当前的axes,fig.sca(axes)设置当前的axes。
    • 删除axes:fig.delaxes(axes)
    • 获取所有的axes:fig.axes保存了所有的axes对象。
  3. Axes对象:大部分的图形元素都是绘制在Axes上。比如条形,折线等。

    • 通过set_xlim和set_ylim可以设置x和y轴的最大值和最小值。
    • 通过text可以在Axes对象上添加文本。只需要指定x和y的坐标以及文字内容就可以了。
    • 添加双Y轴,原理是两个Axes对象堆叠在一起。通过ax.twinx()来克隆出一个新的axes对象。
  4. Axis对象:代表的是x轴和y轴的对象。可以设置x轴的标题样式,刻度线条样式,刻度文本样式等。

  5. Tick对象:一般用来控制轴的位置,比如可以控制y轴显示在右边,x轴可以显示在上面等。

  6. 直接操作plt.plot(),底层也是通过调用axes的相关方法,为了让用户更方便的使用做了相关封装。

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值