Как масштабировать и центрировать ось X

#python #matplotlib

#python #matplotlib

Вопрос:

Я использую matplotlib для построения базовых диаграмм, но в зависимости от данных. Эти диаграммы используются в автоматических графических отчетах, в которых данные не всегда совпадают по диапазону. Количество значений может варьироваться от 24 до 96. График будет масштабироваться по-разному или перемещаться слишком далеко в поле в зависимости от диапазона.. Я пытался использовать tight_layout и автоматическое масштабирование, но это не дает идеальных результатов. Некоторые графики имеют несколько подзаголовков для сравнения, но они используют одну и ту же ось x. Существует также другая ось для температуры.

Как я могу зафиксировать ось x подзаголовков, чтобы все значения находились в пределах границы графика?

На снимке экрана начальное значение тика равно 00:00, но оно не отображается и обрезает оба конца.

скриншот

 fig, ax = plt.subplots()
temperature_ax = ax.twinx()
(markers, stemlines, baseline) = plt.stem(kw, label='Demand', markerfmt='C0o') # bar chart

temperature_ax.plot(x_values_temperature, temperature, color=color, linewidth=2, label='Temperature', )
...
fig.subplots_adjust(bottom=0.3, top=0.7) 
fig.set_size_inches(8, 11)
ax.autoscale(enable=True, axis='x', tight=True)
 

Ответ №1:

Я думаю, что лучшим способом было бы попробовать использовать figsize . Поскольку вы не предоставили код, я не могу сильно помочь, но я предполагаю, что вы используете matplotlib , и в этом случае может помочь использование следующей строки кода.

 import matplotlib.pyplot as plt
plt.figure(figsize=(14,8))
 

Вы можете изменить значение (14,8), которое равно (ширина, высота), и поиграйте с разными числами, пока не получите желаемую подгонку. Вы можете прочитать больше об этой функции здесь .

Комментарии:

1. Мои извинения. Я обновил свой пост, чтобы он был немного более описательным.

2. К сожалению, установка размера fig не решает проблему, мое решение заключается в том, чтобы фиксировать значения x и xticks, чтобы они были центрированы и не находились непосредственно на полях. Подобно тому, как ось y поднимается от нижнего поля, я хотел бы, чтобы это расстояние охватывало все подзаголовки

3. Вы пробовали ylim()?

4. Попробуйте plt.ylim(bottom=0) Вы можете попробовать установить ограничения на оси x и оси y. Это часто помогает смещать график.

5. Я хочу изменить не ось y, а ось x. Однако ни ylim, ни xlim этого не делают