【Matplotlib】详解图像各个部分
⾸先⼀幅Matplotlib的图像组成部分介绍。
在matplotlib中,整个图像为⼀个Figure对象。在Figure对象中可以包含⼀个或者多个Axes对象。每个Axes(ax)对象都是⼀个拥有⾃⼰坐标系统的绘图区域。所属关系如下:
下⾯以⼀个直线图来详解图像内部各个组件内容:
其中:title为图像标题,Axis为坐标轴, Label为坐标轴标注,Tick为刻度线,Tick Label为刻度注释。各个对象关系可以梳理成以下内容:
图像中所有对象均来⾃于Artist的基类。matplotlib中subplot
上⾯基本介绍清楚了图像中各个部分的基本关系,下⾯着重讲⼀下⼏个部分的详细的设置。
⼀个"Figure"意味着⽤户交互的整个窗⼝。在这个figure中容纳着"subplots"。
当我们调⽤plot时,matplotlib会调⽤gca()获取当前的axes绘图区域,⽽且gca反过来调⽤gcf()来获得当前的figure。如果figure为空,它会⾃动调⽤figure()⽣成⼀个figure, 严格的讲,是⽣成subplots(111)。
Figures
Subplots
plt.subplot(221) # 第⼀⾏的左图
plt.subplot(222) # 第⼀⾏的右图
plt.subplot(212) # 第⼆整⾏
plt.show()
注意:其中各个参数也可以⽤逗号,分隔开。第⼀个参数代表⼦图的⾏数;第⼆个参数代表该⾏图像的列数;第三个参数代表每⾏的第⼏个图像。
另外:fig, ax = plt.subplots(2,2),其中参数分别代表⼦图的⾏数和列数,⼀共有 2x2 个图像。函数返回⼀个figure图像和⼀个⼦图ax的array列表。补充:命令可以对⼦图区域划分提供更灵活的配置。
Tick Locators
Tick Locators 控制着 ticks 的位置。⽐如下⾯:
ax = a()
ax.xaxis.set_major_locator(eval(locator))
⼀些不同类型的locators:
代码如下:
import numpy as np
import matplotlib.pyplot as plt
def tickline():
plt.xlim(0, 10), plt.ylim(-1, 1), icks([])
ax = a()
ax.spines['right'].set_color('none')
ax.spines['left'].set_color('none')
ax.spines['top'].set_color('none')
ax.xaxis.set_ticks_position('bottom')
ax.spines['bottom'].set_position(('data',0))
ax.yaxis.set_ticks_position('none')
ax.xaxis.set_minor_locator(plt.MultipleLocator(0.1))
ax.plot(np.arange(11), np.zeros(11))
return ax
locators = [
'plt.NullLocator()',
'plt.MultipleLocator(1.0)',
'plt.FixedLocator([0, 2, 8, 9, 10])',
'plt.IndexLocator(3, 1)',
'plt.LinearLocator(5)',
'plt.LogLocator(2, [1.0])',
'plt.AutoLocator()',
]
n_locators = len(locators)
size = 512, 40 * n_locators
dpi = 72.0
figsize = size[0] / float(dpi), size[1] / float(dpi)
fig = plt.figure(figsize=figsize, dpi=dpi)
fig.patch.set_alpha(0)
for i, locator in enumerate(locators):
plt.subplot(n_locators, 1, i + 1)
ax = tickline()
ax.xaxis.set_major_locator(eval(locator))
<(5, 0.3, locator[3:], ha='center')
plt.subplots_adjust(bottom=.01, top=.99, left=.01, right=.99)
plt.show()
所有这些locators均来⾃于基类。你可以通过继承该基类创建属于⾃⼰的locator样式。同时matplotlib也提供了特殊的⽇期locator, 位于matplotlib.dates.

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。