Как показать линии сетки на графиках 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()
Добавьте линии сетки только к одной оси
Мы можем использовать аргумент оси , чтобы добавить линии сетки только к оси 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()
Или только ось 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()
Настроить линии сетки
Мы также можем настроить внешний вид линий сетки с помощью функции 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:
Как добавить сетку на график в питоне
На этом шаге мы рассмотрим настройку сетки .
За настройку сетки отвечают параметры стиля, представленные в таблице 1 и параметры контекста из таблицы 2.
Параметр | Описание |
---|---|
axes.grid | Отвечает за отображение сетки на поле графика. True — отобразить сетку, False — нет |
grid.color | Цвет линии сетки |
grid.linestyle | Стиль линии сетки |
Параметр | Описание |
---|---|
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)
Получим обычное отображение данных в виде плоского изображения с цветовой картой по умолчанию: