#python #python-3.x #matplotlib
#python #python-3.x #matplotlib
Вопрос:
Итак, у меня есть функция, которая вводит некоторые данные и возвращает цифру matplotlib. Вот как это выглядит (поскольку я имею дело с очень специфическими данными внутри моей функции, я не могу предоставить минимальный рабочий пример, но мой вопрос больше касается общих вещей).
def foo(data):
fig, ax= plt.subplots()
...
return fig
Эта функция работает отлично, если я хочу, чтобы появилось изображение, я просто вызываю foo(data).show()
и все в порядке.
Моя проблема в том, что я готов в другой части кода (не в том же файле) использовать эти цифры на более общем рисунке. Например, у меня могут быть foo(data1)
, foo(data2)
и foo(data3)
, которые я хочу поместить в строку на том же рисунке matplotlib.
На самом деле, я не знаю, возможно ли это сделать в Matplotlib и как это сделать.
Ответ №1:
Создайте свои fig
и ax
вне функции и передайте ax
в качестве параметра значение по умолчанию (таким образом, мы можем создать ax в функции для сохранения обратной совместимости:
def foo(data, ax=None):
if ax is None:
_, ax = plt.subplots()
Это позволяет вам по-прежнему вызывать foo(data)
, как и раньше.
Если вам нужно отобразить эту «функцию» несколько раз, как запрошено, тогда:
fig, axes = plt.subplots(nrows=3)
foo(data1, axes[0])
foo(data2, axes[1])
foo(data3, axes[2])
Если fig
это также требуется, либо передайте его в качестве параметра функции, либо получите к нему доступ через ax.figure
. Код станет:
def foo(data, ax=None):
if ax is None:
fig, ax = plt.subplots()
else:
fig, ax = ax.figure, ax
Комментарии:
1. В моей
foo
функции, к которой я делаю несколько вызововfig
, я попробовал ваше решение, но получаю следующую ошибку: NameError: имя ‘fig’ не определено, должен ли я передатьfig
также в качестве параметра?2. Либо вы передаете
fig
в качестве параметра, либо получаете к нему доступ изax.figure
(я думаю, это работает ^^)