【发布时间】:2017-07-12 04:07:18
【问题描述】:
能否请您澄清一些 Matplotlib 术语:
- “subplots”(或“subplot”?)这个词是“axes”的同义词吗?
- 什么是“axes”和“axis”的单数/复数?
【问题讨论】:
标签: matplotlib
能否请您澄清一些 Matplotlib 术语:
【问题讨论】:
标签: matplotlib
这确实是一个令人困惑的问题。
在英语中,单数是轴,复数是轴。两个这样的轴形成两个轴。
在 matplotlib 中,matplotlib.axes._axes.Axes 对象通常简称为“轴”。该对象包含一个 x 轴和一个 y 轴,因此得名。但说到那个物体,人们会称它为单数轴。其中一些仍然被称为轴。
每个子图都是一个Axes 对象,但有Axes 对象,没有AxesSubplot 对象。通过子图机制创建的轴是matplotlib.axes._subplots.AxesSubplot。这个类派生自matplotlib.axes._axes.Axes,因此这个子图是一个轴。但是,您也可以通过不同的机制创建轴,例如通过在图中添加轴,fig.add_axes()。这将不是一个子图,而是一个轴,matplotlib.axes._axes.Axes。
import matplotlib.pyplot as plt
fig, ax = plt.subplots()
print(ax) # Axes(0.125,0.11;0.775x0.77)
print(type(ax)) # <class 'matplotlib.axes._subplots.AxesSubplot'>
ax2 = fig.add_axes([0.8,0.1,0.05,0.8])
print(ax2) # Axes(0.8,0.1;0.05x0.8)
print(type(ax2)) # <class 'matplotlib.axes._axes.Axes'>
还有其他轴,例如插入轴,
mpl_toolkits.axes_grid1.parasite_axes.AxesHostAxes。该对象也称为轴。
from mpl_toolkits.axes_grid1.inset_locator import zoomed_inset_axes
axins = zoomed_inset_axes(ax, 0.2, loc=3)
print(axins) # Axes(0.125,0.11;0.775x0.77)
print(type(axins)) # <class 'mpl_toolkits.axes_grid1.parasite_axes.AxesHostAxes'>
【讨论】:
matplotlib.axes._axes.Axes 对象,它包含 xaxis、yaxis、它们的标签、刻度等。画布就是一切;它可以承载一个图形,一个图形可以承载多个轴。我们不谈论绘图区域,因为您可以在任何地方绘图,也可以在轴之外。
subplot 对象是一个axes 对象,但有axes 对象,它们不是subplot 对象,您是否认为可以更好地理解。
Axes 和AxesSubplot 有什么区别?如果 subplot 是 AxesSubplot 的一个实例。实例Axes 代表什么?
轴是轴的复数。子图通常有一个x-轴和一个y-轴,它们共同构成两个子图的轴。
我们来谈谈函数/类名:
Figure.add_subplot 或 pyplot.subplot 返回一个 AxesSubplot 对象。这又包含一个XAxis 和一个YAxis 对象。
fig = plt.figure()
ax = fig.add_subplot(111)
x = ax.xaxis
print(type(ax)) # matplotlib.axes._subplots.AxesSubplot
print(type(x)) # matplotlib.axis.XAxis
XAxis 派生自基类 Axis。
AxesSubplot 派生自 SubplotBase 和 Axes。
【讨论】:
Axes 只是轴的复数形式。例如,x 轴和 y 轴一起可以称为 2 轴或仅称为轴。子图大部分都包含轴。并且一个图包含许多子图。
Figure
|
v
------------------
| |
v v
Subplot1 Subplot2
| |
v v
Axes Axes
| |
v v
--------- -----------
| | | |
v v v v
Axis1 Axis2 Axis1 Axis2
【讨论】: