Есть несколько связанных вопросов ( здесь , здесь и здесь ), но предлагаемые решения не работают в моем случае.
Я создаю подзаголовки итеративно, поэтому я не знаю заранее ширину каждого из них (он вычисляется ПОСЛЕ вызова вызывается plt.subplots ()), что означает, что я не могу установить размер каждого подзаговоракогда я их изначально создаю.Я хотел бы установить размер оси x субплота после того, как он уже был создан.
Представьте себе что-то вроде:
items = [A,B,C] #this could have any number of items in it
f,ax = plt.subplots(len(items),1, figsize=(10,10)) #figsize is arbitrary and could be anything
for i in range(len(items)):
#calculate x and y data for current item
#calculate width of x axis for current item
plt.sca(ax[i])
cax = plt.gca()
cax.plot(x,y)
#here is where I would like to set the x axis size
#something like cax.set_xlim(), but for the size, not the limit
Примечание 1. Единицы значения не имеют, а относительный размер имеет значение, поэтому это может быть размер в пикселях, сантиметрах или даже соотношениерассчитывается на основе относительной ширины.
Примечание 2. Ширина оси x в этом случае НЕ связана с пределом x, поэтому я не могу просто установить предел x и ожидать, что ось будет масштабироваться правильно.
Кроме того, я стараюсь, чтобы этот код был коротким, поскольку он должен быть доступен людям, незнакомым с Python, поэтому, если единственное решение заключается в добавлении нескольких строк, оно того не стоит, и я будужить с неправильно масштабированными осями.Это эстетическое предпочтение, но не требование.Спасибо!
РЕДАКТИРОВАТЬ: Вот к чему я стремлюсь