Использование библиотеки Matplotlib. Как изменять интервал осей
По умолчанию библиотека Matplotlib подбирает масштаб графика так, чтобы в окне уместились все точки, однако с помощью функций xlim() и ylim() можно задавать интервал по осям X и Y соответственно, который мы хотим отобразить более подробно.
Следующий пример создает список точек, расположенных на интервале от -50 до 50 по оси X, однако мы ограничиваем просматриваемую область интервалом от -10 до 30.
import matplotlib. pyplot as plt
import numpy as np
if __name__ == ‘__main__’ :
# Интервал изменения переменной по оси X
xmin = — 50.0
xmax = 50.0
# Количество точек на графике
xcount = 301
# Создадим список координат по оси X на отрезке [-xmin; xmax], включая концы
x = np. linspace ( xmin , xmax , xcount )
# Вычислим значение функции в заданных точках
y = np. sinc ( x / np. pi )
# Нарисуем одномерный график с использованием стиля
plt. plot ( x , y )
# На графике будет показан только участок от -10 до 30 по оси X
plt. xlim ( — 10 , 30 )
# Покажем окно с нарисованным графиком
plt. show ( )
Результат получается следующий:

Следующий пример использует также функцию ylim(), чтобы расширить область по вертикали от -1 до 2:
import matplotlib. pyplot as plt
import numpy as np
if __name__ == ‘__main__’ :
# Интервал изменения переменной по оси X
xmin = — 50.0
xmax = 50.0
# Количество точек на графике
xcount = 301
# Создадим список координат по оси X на отрезке [-xmin; xmax], включая концы
x = np. linspace ( xmin , xmax , xcount )
# Вычислим значение функции в заданных точках
y = np. sinc ( x / np. pi )
# Нарисуем одномерный график с использованием стиля
plt. plot ( x , y )
# На графике будет показан только участок от -10 до 30 по оси X
plt. xlim ( — 10 , 30 )
# На графике будет показан участок от -1 до 2 по оси Y
plt. ylim ( — 1 , 2 )
# Покажем окно с нарисованным графиком
plt. show ( )
В результате мы увидим следующую картину:

Если мы хотим изменить только верхний или нижний предел на осях, то можно воспользоваться именованными параметрами xmin или xmax для функции xlim() и ymin или ymax для функции ylim().
Следующий пример изменяет только нижний предел по оси X и верхний по оси Y:
import matplotlib. pyplot as plt
import numpy as np
if __name__ == ‘__main__’ :
# Интервал изменения переменной по оси X
xmin = — 50.0
xmax = 50.0
# Количество точек на графике
xcount = 301
# Создадим список координат по оси X на отрезке [-xmin; xmax], включая концы
x = np. linspace ( xmin , xmax , xcount )
# Вычислим значение функции в заданных точках
y = np. sinc ( x / np. pi )
# Нарисуем одномерный график с использованием стиля
plt. plot ( x , y )
# На графике будет показан только участок от -10 до 30 по оси X
plt. xlim ( xmin = — 10 )
# На графике будет показан участок от -1 до 2 по оси Y
plt. ylim ( ymax = 2 )
# Покажем окно с нарисованным графиком
plt. show ( )
Результат выглядит следующим образом:
Как изменить оси (X, Y) на графике в модуле matplotlib python?
Иммется код, который генерирует график. Это соотношения ТОП1-10, и количество просмотров за которым они и сортировались в этот ТОП. Какие данные на входе: (Значения Y оси идут реверсно(с меньшего до большего, потому-что доставал их через .pop())
x = ['Top10', 'Top9', 'Top8', 'Top7', 'Top6', 'Top5', 'Top4', 'Top3', 'Top2', 'Top1'] y = [257034, 260972, 343206, 362693, 413886, 521024, 670460, 722834, 748542, 1217913]

После выполнения plt.bar(x.pop(), y.pop()) (10 раз), получаю следующий график: Как исправить отображения Y оси? Что за ошибка появилась 1е6 ? Какие будут варианты решения? P.S. Возможно ли сделать на Y оси отображения только тех чисел, которые я задаю при создание графика? То есть: 1217913, 748542 . UPDATE. Ответ от пользователя handowl
Можно использовать pandas.
import pandas as pd df = pd.DataFrame() ax = df.plot.bar(x='positions', y='values', rot=30) #ax.bar_label(ax.containers[0]) #ax.get_legend().remove() plt.ticklabel_format(style='plain', axis='y') plt.show()

После выполнения вашего кода я получаю сделующий результат:
- Почему-то стали открываться 2 окна.
- Что это за синие продолжения на графике после ТОП5 и до ТОП1?
Код функции построения графика полностью:
Как изменить оси в Matplotlib (с примерами)

Вы можете использовать следующий базовый синтаксис, чтобы поменять местами ось X и ось Y в Matplotlib:
plt.gca().invert_xaxis () plt.gca().invert_yaxis ()
В следующем примере показано, как использовать этот синтаксис на практике.
Пример: обратные оси в Matplotlib
Следующий код показывает, как создать базовую диаграмму рассеяния в Matplotlib:
import matplotlib.pyplot as plt #define x and y x = [1, 4, 8, 11, 13, 14] y = [5, 11, 18, 26, 25, 23] #create scatterplot of x and y plt.scatter (x, y)

Мы можем использовать следующий код, чтобы перевернуть ось Y :
import matplotlib.pyplot as plt #define x and y x = [1, 4, 8, 11, 13, 14] y = [5, 11, 18, 26, 25, 23] #create scatterplot of x and y plt.scatter (x, y) #reverse y-axis plt.gca().invert_yaxis ()

Обратите внимание, что ось Y теперь находится в диапазоне от 25 до 5 вместо 5 до 25.
В качестве альтернативы мы могли бы использовать следующий код для реверсирования оси X :
import matplotlib.pyplot as plt #define x and y x = [1, 4, 8, 11, 13, 14] y = [5, 11, 18, 26, 25, 23] #create scatterplot of x and y plt.scatter (x, y) #reverse x-axis plt.gca().invert_xaxis ()

Обратите внимание, что ось x теперь находится в диапазоне от 14 до 0, а не от 0 до 14.
Наконец, мы могли бы использовать следующий код для реверсирования обеих осей :
import matplotlib.pyplot as plt #define x and y x = [1, 4, 8, 11, 13, 14] y = [5, 11, 18, 26, 25, 23] #create scatterplot of x and y plt.scatter (x, y) #reverse both axes plt.gca().invert_xaxis () plt.gca().invert_yaxis ()

Обратите внимание, что значения обеих осей меняются местами.
Дополнительные ресурсы
В следующих руководствах объясняется, как выполнять другие распространенные операции в Matplotlib:
(matplotlib) Как на оси x/y поменять стандартные числа на слова?
Суть проблемы описал в заголовке. Хочу сделать статистику по дням недели, и вместо цифр хотел бы указать названия дней недели. Как это сделать?
Пока мой код выглядит так:
import matplotlib from matplotlib import pyplot as plt import numpy as np fig = plt.figure() plt.plot([10,5,0, 7, 19, 34, 3, 78]) plt.xlabel('Час') plt.ylabel('Количество объявлений') plt.show()
- Вопрос задан более трёх лет назад
- 3116 просмотров
Комментировать
Решения вопроса 1

from pylab import * fig = plt.figure() plt.plot([10, 5, 0, 7, 19, 34, 3]) xticks(range(7), ['пн', 'вт', 'ср', 'чт', 'пт', 'сб', 'вс']) plt.ylabel('Количество объявлений') plt.show()
Ответ написан более трёх лет назад
Нравится 1 2 комментария