#python #matplotlib #subplot #figure
Вопрос:
Следующий код создает холст с двумя пустыми участками на нем, что именно то, что он должен делать.
import matplotlib.pyplot as plt
from matplotlib.gridspec import GridSpec
class MakerOfTwoEmptyPlots(object):
def __init__(self):
self.fig = plt.figure()
self.gs = GridSpec(1, 2, figure=self.fig)
self.fig.add_subplot(self.gs[0, 0])
self.fig.add_subplot(self.gs[0, 1])
plotter = MakerOfTwoEmptyPlots()
plt.show()
Однако, если я выполню точно такой же код за пределами класса, например так:
import matplotlib.pyplot as plt
from matplotlib.gridspec import GridSpec
fig = plt.figure()
gs = GridSpec(1, 2, figure=fig)
fig.add_sublot(gs[0, 0])
fig.add_sublot(gs[0, 1])
plt.show()
Я получаю ошибку AttributeError: 'Figure' object has no attribute 'add_sublot'
, несмотря на то, что код по сути идентичен и self.fig
имеет один и fig
тот же тип (я проверил в отладчике). Это глубоко сбивает с толку! Кто — нибудь знает, что здесь происходит?
Поскольку это похоже на проблему, которая может зависеть от этого, я использую Python 3.9.1, MatPlotLib 3.3.3 и IntelliJ IDEA Community Edition 2020.3.
Правка: Как указывали несколько человек, это была простая опечатка. ой. Спасибо, что увидел то, чего не смог увидеть я.
Комментарии:
1.
Figure
объекты действительно не имеютadd_sublot
атрибутов. Вместо этого они естьadd_subplot
, как вы использовали в первом блоке кода. Видите разницу?2. Это опечатка.
fig.sublot(gs[0,0])
п. отсутствует.