Я хотел бы сопоставить два отдельных участка в matplotlib на том же рисунке. каждая часть сюжета вызывает subplot
, и я бы хотел, чтобы их оси были независимыми. Пример: я хочу противопоставлять два участка, один из которых делает 1x3 сюжетные, а другой, что делает 2х2 сюжетные, в том же рисунке:Создание независимых графиков matplotlib на одной фигуре без GridSpec?
import matplotlib.pylab as plt
def plot_A():
# make a set of subplots here...
plt.subplot(1, 3, 1)
plt.subplot(1, 3, 2)
plt.subplot(1, 3, 3)
def plot_B():
# make a set of independent subplots here
plt.subplot(2, 2, 1)
plt.subplot(2, 2, 2)
plt.subplot(2, 2, 3)
plt.subplot(2, 2, 4)
def make_fig():
width = 6.
height = 5.
fig = plt.figure(figsize=(width, height))
ratio = height/width
ax1 = fig.add_axes([.03 * ratio, .03, .9 * ratio, .9])
# make plot A
plot_A()
ax1 = fig.add_axes([.03 * ratio, .01, .9 * ratio, .9/2.5])
# make plot B below plot A in the figure, with
# space constraints given by fig.add_axes
plot_B()
plt.show()
make_fig()
это не работает, потому что сюжетные заезжает plot_B
переопределения в plot_A
, Я знаю, что gridspec может использоваться для создания единого макета, который содержит оба, но я не могу использовать это. plot_A и plot_B могут быть функциями, которые находятся в отдельных модулях, и могут быть вызваны, чтобы сделать отдельные фигуры независимыми от make_fig()
.
обновление: решение заключается в использовании нескольких гридов с gridspec.update
, чтобы разместить их в разных местах на рисунке.
Любопытно, почему вы не хотите использовать 'plt.GridSpec', это похоже на правильный инструмент здесь. – mwaskom
@mwaskom: потому что gridspec заставляет меня сломать модульную модульность, создав глобальный gridspec, который учитывает как '' plot_A() ', так и' 'plot_B()' '. но эти две функции делают подзаголовки, которые также используются для создания отдельных фигур только A или просто B. с gridspec, я должен был бы создать новую функцию, которая воспроизводит код '' plot_A() '' и '' plot_B() ' ' – mvd
Вы можете использовать несколько объектов GridSpec на одной фигуре, поэтому я не уверен, что вы имеете в виду. – mwaskom