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

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

Как показать линии сетки на графиках 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. Внешний вид графика с изменёнными параметрами сетки

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

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.

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

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

Показ изображений и цветовых сеток

На этом занятии мы увидим, как с помощью matplotlib можно выводить изображения и цветовые сетки. Начнем с показа изображений. Для этого в пакете имеется специальная функция:

которая на входе ожидает либо двумерный numpy массив, либо PIL-изображение.

Давайте представим, что у нас есть изображение в одном из известных форматов (JPEG, PNG, GIF, BMP и т.д.), хранящийся в файле:

Чтобы его загрузить, а потом отобразить функцией imshow(), необходимо воспользоваться модулем для загрузки изображений PIL:

from PIL import Image

И, затем, из модуля Image вызвать функцию open():

img = Image.open('panda.jpg')

Все, у нас в программе сформировался объект PIL-изображения из файла panda.jpg. Далее, нам достаточно вызвать функцию imshow() и передать первым параметром это изображение:

import matplotlib.pyplot as plt fig = plt.figure(figsize=(6, 4)) ax = fig.add_subplot() ax.imshow(img) plt.show()

Увидим следующий результат:

Также можно загрузить изображение из формата PNG в градациях серого:

img = Image.open('panda_gray.png')

Соответственно, увидим изображение уже в градациях серого:

И здесь возникает вопрос. Откуда функция imshow() «знает» как раскрашивать точки загруженного изображения? Может быть этот вопрос покажется странным? Давайте я его конкретизирую и сделаю следующее. Сформирую произвольный двумерный массив из случайных целых чисел:

data = np.random.randint(0, 255, (100, 100)) ax.imshow(data)

и отобразим его с помощью функции imshow(). Увидим следующее:

Здесь массив data содержит тот же диапазон чисел [0; 255], что и массив img. Но для панды мы видим раскраску в градациях серого, а для data совсем другие цвета. Так как же функция imshow() определяет цвет для конкретного числового значения?

Все просто. Во всех случаях используется специальная таблица (диапазон) соответствия чисел и цветов. Например, в matplotlib имеются заранее определенные наборы таких таблиц. Они называются цветовыми картами.

Для произвольных двумерных данных мы можем указывать желаемую цветовую карту через параметр cmap:

ax.imshow(data, cmap='plasma')

В результате, раскраска чисел будет уже другой:

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

img = Image.open('panda_gray.png') ax.imshow(img, cmap='plasma')

Все равно выведут изображение в градациях серого. Но, если преобразовать объект PIL в двумерный массив numpy:

img = np.array(Image.open('panda_gray.png'))

то при отображении уже будет применяться текущая цветовая карта:

ax.imshow(img) # цветное изображение ax.imshow(img, cmap='gray') # изображение в градациях серого

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

b1 = ax.imshow(img, origin='lower', cmap='gray', aspect='equal', alpha=0.7) fig.colorbar(b1, ax=ax)

Здесь с помощью функции colorbar() дополнительно сделан вывод цветовой карты для данных системы координат ax.

Функция pcolormesh()

Если требуется отобразить двумерный массив из числовых значений в виде цветовой сетки, то для этого можно воспользоваться еще одной функцией pcolormesh(), которая работает несколько быстрее imshow(), но отображает данные без учета соотношения сторон и может работать только с двумерными массивами, то есть, изображения в форматах RGB или RGBA будут приводить к ошибке.

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

data = np.random.randint(0, 255, (10, 10)) ax.pcolormesh(data)

Получим обычное отображение данных в виде плоского изображения с цветовой картой по умолчанию:

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

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