Как добавить сетку на график в питоне
Перейти к содержимому

Как добавить сетку на график в питоне

  • автор:

Как показать линии сетки на графиках Matplotlib

Как показать линии сетки на графиках Matplotlib

По умолчанию Matplotlib не отображает линии сетки на графиках. Однако вы можете использовать функцию matplotlib.pyplot.grid() , чтобы легко отображать и настраивать линии сетки на графике.

В этом руководстве показан пример использования этой функции на практике.

Базовая диаграмма рассеяния в Matplotlib

В следующем коде показано, как создать простую диаграмму рассеяния с помощью Matplotlib:

import matplotlib.pyplot as plt #create data x = [1, 2, 3, 4, 5] y = [20, 25, 49, 88, 120] #create scatterplot of data plt.scatter (x, y) plt.show() 

Добавьте линии сетки к обеим осям

Чтобы добавить линии сетки на график, мы можем просто использовать команду plt.grid(True) :

import matplotlib.pyplot as plt #create data x = [1, 2, 3, 4, 5] y = [20, 25, 49, 88, 120] #create scatterplot of data with gridlines plt.scatter (x, y) plt.grid ( True ) plt.show() 

График Matplotlib с линиями сетки

Добавьте линии сетки только к одной оси

Мы можем использовать аргумент оси , чтобы добавить линии сетки только к оси x:

import matplotlib.pyplot as plt #create data x = [1, 2, 3, 4, 5] y = [20, 25, 49, 88, 120] #create scatterplot of data with gridlines plt.scatter (x, y) plt.grid ( axis='x' ) plt.show() 

Линии сетки Matplotlib только на одной оси

Или только ось Y:

import matplotlib.pyplot as plt #create data x = [1, 2, 3, 4, 5] y = [20, 25, 49, 88, 120] #create scatterplot of data with gridlines plt.scatter (x, y) plt.grid ( axis='y' ) plt.show() 

График Matplotlib с линиями сетки по оси Y

Настроить линии сетки

Мы также можем настроить внешний вид линий сетки с помощью функции plt.rc() :

import matplotlib.pyplot as plt #create data x = [1, 2, 3, 4, 5] y = [20, 25, 49, 88, 120] #create scatterplot of data with gridlines plt.rc('grid', linestyle=':', color='red', linewidth= 2 ) plt.scatter (x, y) plt.grid ( True ) plt.show() 

Индивидуальные линии сетки в Matplotlib

Полный список способов настройки линий сетки вы можете найти в документации Matplotlib .

Дополнительные ресурсы

В следующих руководствах объясняется, как выполнять другие распространенные задачи в Matplotlib:

Как добавить сетку на график в питоне

На этом шаге мы рассмотрим настройку сетки .

За настройку сетки отвечают параметры стиля, представленные в таблице 1 и параметры контекста из таблицы 2.

Таблица 1. Параметры стиля для настройки сетки
Параметр Описание
axes.grid Отвечает за отображение сетки на поле графика. True — отобразить сетку, False — нет
grid.color Цвет линии сетки
grid.linestyle Стиль линии сетки

Таблица 2. Параметры контекста для настройки сетки
Параметр Описание
grid.linewidth Толщина линии сетки

Рассмотрим работу с сеткой на примерах. Для начала установим стиль whitegrid и контекст notebook :

sns.set_style("whitegrid") sns.set_context("notebook")

Построим диаграмму рассеяния для набора iris :

import matplotlib.pyplot as plt import pandas as pd import numpy as np import seaborn as sns iris = sns.load_dataset("iris") sns.set_style("whitegrid") sns.set_context("notebook") sns.scatterplot(x='sepal_length', y='petal_length', data=iris) plt.show()

Архив с файлом можно взять здесь.

Результат работы приложения изображен на рисунке 1.

Рис.1. Внешний вид графика с примененным стилем whitegrid и контекстом notebook

Теперь изменим параметры сетки:

import matplotlib.pyplot as plt import pandas as pd import numpy as np import seaborn as sns iris = sns.load_dataset("iris") sns.set_style("whitegrid", rc='grid.color': '#ff0000', 'grid.linestyle': '--'>) sns.set_context("notebook", rc='grid.linewidth': 3.0>) sns.scatterplot(x='sepal_length', y='petal_length', data=iris)

Архив с файлом можно взять здесь.

Результат работы приложения изображен на рисунке 2.

Рис.2. Внешний вид графика с изменёнными параметрами сетки

На следующем шаге мы рассмотрим настройку поля и осей графика .

Размещаем стандартные текстовые элементы на графике

На одном из прошлых занятий мы увидели, как можно строить двумерные линейные графики с помощью функции plot() и задавать различные стили его отображения: цвет, тип, толщину линии. На этом занятии продолжим тему оформления графиков и начнем с сетки. Как мы уже говорили, в самом простом случае достаточно вызвать команду grid():

import numpy as np import matplotlib.pyplot as plt y = np.arange(0, 5, 1) x = np.array([a*a for a in y]) y2 = [0, 2, 3, 4, 5, 7] x2 = [i+1 for i in y2] lines = plt.plot(x, y, x2, y2) plt.grid() plt.show()

И сетка появится сформируется в текущих координатных осях:

Причем, ее размеры будут автоматически подстраиваться под размер осей (объекта Axes).

Помимо обычной крупной сетки (major grid) можно наложить более мелкую (minor grid) минорную сетку. Для этого сначала нужно включить режим отображения минорной сетки:

plt.minorticks_on()

А, затем, в функции grid() прописать два типа сеток (мажорную и минорную):

plt.grid(which='major', color = '#444', linewidth = 1) plt.grid(which='minor', color='#aaa', ls=':')

В результате, график приобретет вид:

Однако, здесь следует иметь в виду, что такая мелкая сетка заметно снижает производительность при отображении графиков. Поэтому без особой необходимости ее лучше не использовать.

Создание надписей и подписей

  • title – заголовок для осей;
  • xlabel, ylabel – подписи для каждой из осей;
  • text – произвольная текстовая информация в области осей;
  • annotate – аннотация (текст с указателем).
  • subtitle – заголовок для фигуры (окна);
  • figtext – размещение произвольной текстовой информации в области окна.
fig = plt.figure(figsize=(7, 4)) ax = fig.add_subplot() plt.figtext(0.05, 0.6, 'Текст в области окна') fig.suptitle('Заголовок окна') ax.set_xlabel('Ox') ax.set_ylabel('Oy') ax.text(0.05, 0.1, 'Произвольный текст в координатных осях') ax.annotate('Аннотация', xy=(0.2, 0.4), xytext=(0.6, 0.7), arrowprops={'facecolor': 'gray', 'shrink': 0.1}) plt.show()

Обратите внимание, если у нас используется всего одна координатная ось, то подписи для нее можно определить с помощью функций:

plt.xlabel('Ox') plt.ylabel('Oy')

Если же объектов Axes несколько, то эти функции будут относиться к последней активной оси.

Оформление текстовых элементов

Теперь перейдем к оформлению на уровне текстовых блоков. Как правило, все текстовые элементы в matplotlib – это объекты класса Text. И у них имеются стандартный набор свойств для их оформления. Полный их перечень можно посмотреть на странице официальной документации: https://matplotlib.org/stable/api/text_api.html Я же приведу наиболее употребительные:

Свойство Описание
alpha степень прозрачности (число в диапазоне [0; 1])
backgroundcolor цвет фона
color или c цвет текста
fontfamily или family тип шрифта
fontsize или size размер шрифта
fontstyle или style стиль шрифта:
fontweight или weight степень утолщения – число от 0 до 1000 или константы: ‘ultralight’, ‘light’, ‘normal’, ‘regular’, ‘book’, ‘medium’, ‘roman’, ‘semibold’, ‘demibold’, ‘demi’, ‘bold’, ‘heavy’, ‘extra bold’, ‘black’
horizontalalignment или ha выравнивание по горизонтали:
label текст заголовка
position координаты текста (x, y)
rotation поворот текста: вещественное число [0; 1] или константы
verticalalignment или va выравнивание по вертикали:
visible отображение текста: True/False
x координата x – вещественное число [0; 1]
y координата y – вещественное число [0; 1]

Использовать эти свойства очень просто. Например, в функции figtext() пропишем именованный параметр fontsize:

plt.figtext(0.05, 0.6, 'Текст в области окна', fontsize=24)

Теперь текст отображается с новым размером шрифта. Или, можно еще указать цвет:

plt.figtext(0.05, 0.6, 'Текст в области окна', fontsize=24, color='r')

Получим текст размером 24 и красным цветом. По аналогии задаются все другие свойства. Также следует иметь в виду, что у каждого типа текстовых объектов имеются и свои дополнительные свойства. Подробно о них можно посмотреть в документации.

Параметр bbox

С помощью параметра bbox можно устанавливать дополнительные элементы оформления для текстовых блоков. Ему следует указать словарь, ключами которого являются аргументы класса FancyBboxPatch:

Свойство Описание
boxstyle вид рамки вокруг текста
alpha степень прозрачности фона
color цвет фона с рамкой
edgecolor или ec цвет рамки
facecolor или fc цвет заливки
fill использовать ли заливку: True/False
hatch тип штриховки:
linestyle или ls стиль линии границы:
linewidth или lw толщина рамки

В качестве параметра boxstyle можно выбирать следующие значения:

Атрибут Описание Вид
circle имеет параметр pad (отступ от границы)
darrow имеет параметр pad
larrow имеет параметр pad
rarrow имеет параметр pad
round имеет параметры: pad, rounding_size
roundtooth имеет параметры: pad, tooth_size
sawtooth имеет параметры: pad, tooth_size
square имеет параметр pad

Пример использования:

ax.text(15, 2, 'Текст', bbox={'boxstyle':'darrow', 'facecolor': '#AAAAFF'}) ax.plot(np.arange(0, 5, 0.25))

Цвет фона фигуры и координатных осей

Используя параметр facecolor можно задавать цвет фона для всей формы и отдельно для координатных осей. Например, если при создании фигуры указать этот параметр в виде:

fig = plt.figure(figsize=(7, 4), facecolor='#eee')

то получим светло-серую заливку фона окна. Или, это можно сделать с помощью метода set() после создания фигуры:

fig.set(facecolor='#eee')

То же самое выполняется и для координатных осей, например, изменим цвет фона на светло-зеленый:

ax.set(facecolor='#AAFFAA')

На этом мы завершим знакомство с типовыми элементами оформления графиков. На следующем продолжим эту тему и поговорим об отображении легенды – краткой информации по каждому графику и возможности рисования стандартных геометрических фигур.

Pyrhon, plotly отображение сетки

Как сделать сетку пунктирной(grid)? https://plotly.com/python/reference/layout/xaxis/ Подходящие свойства тут не нашел. Код:

 xaxis1=

Отслеживать
задан 23 мар 2022 в 19:35
3 2 2 бронзовых знака

1 ответ 1

Сортировка: Сброс на вариант по умолчанию

fig.update_xaxes(gridcolor='black', griddash='dash', minor_griddash="dot") 

Подробно по стилизации линий вы можете ознакомится на примерах на официальном сайте на примерах на официальном сайте

Отслеживать
ответ дан 26 ноя 2022 в 12:52
56 6 6 бронзовых знаков

  • python
  • plotly
    Важное на Мете
Похожие

Подписаться на ленту

Лента вопроса

Для подписки на ленту скопируйте и вставьте эту ссылку в вашу программу для чтения RSS.

Дизайн сайта / логотип © 2024 Stack Exchange Inc; пользовательские материалы лицензированы в соответствии с CC BY-SA . rev 2024.1.9.3159

Нажимая «Принять все файлы cookie» вы соглашаетесь, что Stack Exchange может хранить файлы cookie на вашем устройстве и раскрывать информацию в соответствии с нашей Политикой в отношении файлов cookie.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *