Fig.gca() vs. fig.add_subplot()
Большинство примеров объектно-ориентированного matplotlib получают объект Axis с чем-то вроде
import matplotlib.pyplot as plt
fig1 = plt.figure()
ax1 = fig1.add_subplot(111)
ax1.plot(...... etc.
Что я всегда считал неочевидным, особенно с точки зрения matlab.
Недавно я обнаружил, что эквивалентные результаты можно получить с помощью
ax1 = fig1.gca() # "GetCurrentAxis"
Это делает меня более разумным (возможно, только из-за использования в прошлом Matlab).
Почему add_subplot() с запутанным 111 аргументом, выбранным в качестве предпочтительного способа получения объекта оси? Есть ли какая-либо функциональная разница?
Спасибо!
Ответы
Ответ 1
plt.gca
получает текущие оси, создавая при необходимости. Это эквивалентно только в случае простейших 1 осей.
Предпочтительный способ - использовать plt.subplots
(и документы/примеры действительно немного отстают, если вы хотите начать делать вклад, обновление документов - отличное место для начала):
fig, ax = plt.subplots(1, 1)
или
fig, (ax1, ax2) = plt.subplots(2, 1)
и т.д.
Ответ 2
Для создания 3D-экземпляра есть три способа:
plt.gca(projection='3d')
plt.subplot(projection='3d')
fig = plt.figure()
fig.add_subplot(111, projection='3d')
Может быть, третий путь более сложный.