matplotilib - 从 matplotlib.axis.py 实例化轴



我正在做一个项目,我们必须为 matplotlib 实现一个功能。我们不得不更改 Axis 类中的代码。我必须编写单元测试以确保我们添加的内容按预期工作。我必须实例化一个 Axis(( 对象,但我不知道该怎么做。我已经搜索了这些示例,但它们都使用 pyplot。甚至测试/test_axes.py中的代码也使用 pyplot。有没有办法实例化轴?

大多数 pyplot 命令都实例化Axes。 例如

import matplotlib.pyplot as plt
ax = plt.gca()
print (ax, type(ax))

给你一个Axes ax.代码打印

<matplotlib.axes._subplots.AxesSubplot object at 0x000000001B8AB0B8>, 
<class 'matplotlib.axes._subplots.AxesSubplot'>

更多示例,这些示例都为您提供了一个 Axes 实例:

#1
fig, ax = plt.subplots()
#2
ax = plt.gcf().add_subplot(111)
#3
ax = plt.gcf().add_axes([.1,.1,.9,.9])

你根本无法使用pyplot不会获得任何东西。

我认为如果不对其进行

子类化(就像我猜的那样(并覆盖引发NotImplementedError的方法,就不可能直接从 matplotlib.axis.py 实例化 Axis 对象。

但是,派生类XAxisYAxis可以直接实例化。这可以在没有pyplot接口的情况下使用matplotlib面向对象API来完成,如下所示:

from matplotlib.figure import Figure
from matplotlib.axes import Axes
from matplotlib.axis import XAxis, YAxis
fig = Figure()
ax = Axes(fig, [0.1, 0.1, 0.8, 0.8])
xaxis = XAxis(ax)
yaxis = YAxis(ax)
print(xaxis, type(xaxis))
print(yaxis, type(yaxis))

运行代码的结果是:

XAxis(64.000000,48.000000) <class 'matplotlib.axis.XAxis'>
YAxis(64.000000,48.000000) <class 'matplotlib.axis.YAxis'>

我想相同的代码结构也应该用于实例化您自己的 Axis 类实现。

最新更新