#python #python-3.x #matplotlib #syntax #subplot
Вопрос:
Я пытаюсь запустить код, который изначально был написан для Python 2 для Python 3. Блок кода является:
def draw_bbox(plt, ax, rois, fill=False, linewidth=2, edgecolor=[1.0, 0.0, 0.0], **kwargs):
for i in range(rois.shape[0]):
roi = rois[i,:].astype(np.int)
ax.add_patch(plt.Rectangle((roi[0], roi[1]),
roi[2] - roi[0], roi[3] - roi[1],
fill=False, linewidth=linewidth, edgecolor=edgecolor, **kwargs))
def subplot(plt, (Y, X), (sz_y, sz_x) = (10, 10)):
plt.rcParams['figure.figsize'] = (X*sz_x, Y*sz_y)
fig, axes = plt.subplots(Y, X)
return fig, axes
и ошибка, которую я получаю, такова:
File "<ipython-input-7-9e2eb5f0d3ab>", line 8
def subplot(plt, (Y, X), (sz_y, sz_x) = (10, 10)):
^
SyntaxError: invalid syntax
Как я могу это исправить? Код взят из этого репозитория: https://github.com/s-gupta/v-coco/blob/master/V-COCO.ipynb
Ответ №1:
Вот как вы можете переписать эту функцию:
def subplot(plt, yx, sz = (10, 10)):
(Y, X) = yx
(sz_y, sz_x) = sz
plt.rcParams['figure.figsize'] = (X*sz_x, Y*sz_y)
fig, axes = plt.subplots(Y, X)
return fig, axes
Ответ №2:
Вы не можете поместить набор в качестве параметра в параметр определяемой пользователем функции. Вероятно, вы можете разделить X и Y на два разных параметра, таких как:
def subplot(plt, Y, X, (sz_y, sz_x) = (10, 10)):
или вы можете указать кортеж, как в python3
def subplot(plt, xy: set, (sz_y, sz_x) = (10, 10)):
Комментарии:
1. спасибо за ваши комментарии. Я не изменил ни одной части их кода. Я в основном просто запустил их записную книжку без каких-либо изменений.
2. Файл «<ipython-вход-8-903b7f687ea5>», строка 9, подзаголовок(plt, Y, X, (sz_y, sz_x) = (10, 10)): ^ Ошибка синтаксиса: неверный синтаксис
3. не работал файл «<ipython-input-9-10f88ce2a5ce>», строка 9, подзаголовок(plt, xy: набор, (sz_y, sz_x) = (10, 10)): ^ Ошибка синтаксиса: неверный синтаксис