我正在做一个项目,我们必须为 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 对象。
但是,派生类XAxis
和YAxis
可以直接实例化。这可以在没有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 类实现。