@Kirushkaa

Как увеличить место под xticks?

Всем привет. Столкнулся с проблемой, что для названия осей не хватает места. Увеличение фигуры не помогает.
plt.plot(figsize=(size*2, 30))
plt.bar(data['Дата'].values, data['SYS'].values, 0.15, color='red', label='SYS')
plt.bar(data['Дата'].values, data['DIA'].values, 0.15, color='blue', label='DIA')
plt.xticks(rotation=45, fontsize=7)
plt.legend()

Выводит вот так.
609ad8fcc0231386329272.png

+ случайно не знаете, как изменить разбиение оси y, что б там было от 0 до 220 с интервалом 10 или 20.
Заранее Спасибо!!!!
  • Вопрос задан
  • 310 просмотров
Решения вопроса 1
@Drill
Kirushkaa,

Краткая инструкция:

import matplotlib.pyplot as plt

def diagram(date,sys,dia):
    # создаем пустую канву fig
    dpi = 100
    fig = plt.figure(dpi = dpi, figsize = (800 / dpi, 600 / dpi))
    
    # "...Столкнулся с проблемой, что для названия осей не хватает места..."
    # Добавляем subplot на канву
    # [left, bottom, width, height] - каждый параметр в пределах от 0 до 1
    # меняем bottom и height, чтобы двигать subplot по канве вверх-вниз,
    # тем самым уменьшая или увеличивая место для xlabel и xticks
    # bottom + height <= 1
    ax = fig.add_axes([0.1, 0.2, 0.8, 0.7])
    ax.set_title("Title - values from date")
    ax.set_xlabel('Day - Time')
    ax.set_ylabel('Values')

    # Рисуем графики:
    #ax.grid(True) - если надо отобразить сетку
    #ax.plot(date, sys, linestyle = 'solid', marker='o', markersize=1, label='SYS')
    #ax.plot(date, dia, linestyle = 'solid', marker='o', markersize=1, label='DIA')
    
    # Рисуем диаграмму:
    ax.bar(date, sys, 1 / len(date), color='red', label='SYS')
    ax.bar(date, dia, 1 / len(date), color='blue', label='DIA')

    ax.legend() # Показываем легенду
    #ax.legend(loc='upper left') - изменить положение легенды

    # "...как изменить разбиение оси y, что б там было от 0 до 220 с интервалом 10 или 20..."
    # от 0 до 220
    y_lim_min = 0
    y_lim_max = 220
    ax.set_ylim(y_lim_min, y_lim_max)

    # с интервалом 20 
    step_major = 20
    y_major_ticks = range(y_lim_min, y_lim_max, step_major)
    ax.set_yticks(y_major_ticks)

    # Меняем параметры для основных тиков оси Х (для Y - axis='y', для обеих осей - axis='both')
    # для основных тиков which='major', для дополнительных which='minor'
    ax.tick_params(axis='x', which='major', labelsize=10, labelrotation=45)
    
    plt.savefig('test.png', dpi = dpi) # Сохранить в файл
    plt.show()


Смотрим, что получилось:

import random
import datetime as dt

day = [dt.datetime(2021, 2, 16, 15, 15, 00) + dt.timedelta(hours=i*3) for i in range(0,15)]
sys = [random.randint(110,140) for _ in range(15)]
dia = [i - random.randint(1,5)-30 for i in sys]

diagram(day,sys,dia)


609be4f262d58366377752.png
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы