Я пытаюсь создать модуль, который содержит простые функции для создания графиков с некоторым распространенным форматированием, уже примененным к ним.Некоторые из этих функций будут применяться к уже существующим объектам matplotlib и возвращать другие объекты matplotlib основной программе.
Этот первый фрагмент кода является примером того, как я в настоящее время генерирую графики, и он работает как есть.
# Include relevant python libraries
from matplotlib import pyplot as plt
# Define plot formatting
axesSize = [0, 0, 1, 1]
axesStyle = ({'facecolor':(0.95, 0.95, 0.95)})
gridStyle = ({'color':'k',
'linestyle':':',
'linewidth':1})
xString = "Independent Variable"
xLabelStyle = ({'fontsize':18,
'color':'r'})
# Create figure and axes objects with appropriate style
figureHandle = plt.figure()
axesHandle = figureHandle.add_axes(axesSize, **axesStyle)
axesHandle.grid(**gridStyle)
axesHandle.set_xlabel(xString, **xLabelStyle)
Я хочу создать функцию, которая объединит команду add_axes () с командами grid () и set_xlabel ().В качестве первой попытки, игнорируя все стили, я предложил следующую функцию в моем модуле NTPlotTools.py.
def CreateAxes(figureHandle, **kwargs):
axesHandle = figureHandle.add_axes()
return axesHandle
Сценарий, который вызывает функции, выглядит следующим образом:
# Include relevant python libraries
from matplotlib import pyplot as plt
from importlib.machinery import SourceFileLoader as fileLoad
# Include module with my functions
pathName = "/absolute/file/path/NTPlotTools.py"
moduleName = "NTPlotTools.py"
pt = fileLoad(moduleName, pathName).load_module()
# Define plot formatting
gridStyle = ({'color':'k',
'linestyle':':',
'linewidth':1})
# Create figure and axes objects with appropriate style
figureHandle = plt.figure()
axesHandle = pt.CreateAxes(figureHandle)
axesHandle.grid(**gridStyle)
Тем не менее, я получаю следующее сообщение об ошибке при запуске основного кода:
---------------------------------------------------------------------------
AttributeError Traceback (most recent call last)
<ipython-input-4-73802a54b21a> in <module>()
17 axesHandle = pt.CreateAxes(figureHandle)
18
---> 19 axesHandle.grid(**gridStyle)
AttributeError: 'NoneType' object has no attribute 'grid'
Это говорит мне о том, что axesHandle не является объектом осей matplotlib, и, соответственно, вызов функции CreateAxes () не сделалвернуть объект осей matplotlib.Есть ли хитрость в передаче объектов matplotlib в / из функций?