#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 этого не делают