Как изменить фон графика в Matplotlib
Matplotlib - одна из наиболее широко используемых библиотек визуализации данных в Python. От простых до сложных визуализаций - это библиотека для большинства.
В этом уроке мы рассмотрим, как изменить фон графика в Matplotlib.
Импорт данных и библиотек
Сначала импортируем необходимые библиотеки. Нам, очевидно, понадобится Matplotlib, и мы будем использовать Pandas для чтения данных:
import matplotlib.pyplot as plt
import pandas as pd
В частности, мы будем использовать набор данных погоды Сиэтла:
weather_data = pd.read_csv("seattleWeather.csv")
print(weather_data.head())
DATE PRCP TMAX TMIN RAIN
0 1948-01-01 0.47 51 42 True
1 1948-01-02 0.59 45 36 True
2 1948-01-03 0.42 45 35 True
3 1948-01-04 0.31 45 34 True
4 1948-01-05 0.17 45 32 True
Создание сюжета
Теперь давайте создадим простую диаграмму рассеяния Matplotlib с несколькими разными переменными, которые мы хотим визуализировать:
PRCP = weather_data['PRCP']
TMAX = weather_data['TMAX']
TMIN = weather_data['TMIN']
Теперь мы построим диаграмму рассеяния между минимальной температурой и осадками, используя PyPlot Matplotlib:
plt.scatter(TMIN, PRCP)
plt.show()
График, который мы построили, можно интерпретировать, но он выглядит немного простым. Попробуем настроить его. Мы хотим настроить фон нашего сюжета, используя несколько разных методов.
Изменить фон графика в Matplotlib
Теперь давайте продолжим и изменим фон этого сюжета. Мы можем сделать это двумя разными подходами. Мы можем изменить цвет фона, который сейчас установлен на white
. Или мы можем ввести изображение, используя imshow()
.
Изменить фон осей в Matplotlib
Давайте сначала изменим цвет фона. Это можно сделать либо с помощью функции set()
, передав аргумент face
и его новое значение, либо с помощью специальной функции set_facecolor()
:
ax = plt.axes()
ax.set_facecolor("orange")
# OR
ax.set(facecolor = "orange")
plt.scatter(TMIN, PRCP)
plt.show()
Любой из этих подходов дает один и тот же результат, поскольку они оба вызывают одну и ту же функцию под капотом.
Изменить фон рисунка в Matplotlib
Если вы хотите установить фон для фигуры и чтобы оси были прозрачными, это можно сделать с помощью аргумента set_alpha()
при создании фигуры. Создадим фигуру и объект оси. Конечно, вы также можете использовать функцию set()
и alpha
вместо этого передать атрибут.
Цвет всей фигуры будет синим, и мы изначально установим alpha
для объекта осей значение 1.0
, что означает полную непрозрачность. Мы окрашиваем объект оси в оранжевый цвет, давая нам оранжевый фон внутри синей фигуры:
fig = plt.figure()
fig.patch.set_facecolor('blue')
fig.patch.set_alpha(0.6)
ax = fig.add_subplot(111)
ax.patch.set_facecolor('orange')
ax.patch.set_alpha(1.0)
plt.scatter(TMIN, PRCP)
plt.show()
Теперь посмотрим, что произойдет, если мы уменьшим альфа-канал подзаголовка осей до 0.0
:
fig = plt.figure()
fig.patch.set_facecolor('blue')
fig.patch.set_alpha(0.6)
ax = fig.add_subplot(111)
ax.patch.set_facecolor('orange')
ax.patch.set_alpha(0.0)
plt.scatter(TMIN, PRCP)
plt.show()
Обратите внимание, что фон самого сюжета теперь прозрачен.
Добавить изображение на фон графика в Matplotlib
Если вы хотите использовать изображение в качестве фона для сюжета, это можно сделать с помощью функции imread()
PyPlot. Эта функция загружает изображение в Matplotlib, которое можно отобразить с помощью функции imshow()
.
Для печати поверх изображения необходимо указать размер изображения. По умолчанию Matplotlib использует левый верхний угол изображения в качестве источника изображения. Мы можем передать функции список точек imshow()
, указав, какая область изображения должна отображаться. В сочетании с дополнительными сюжетами поверх изображения можно вставить еще один график.
Давайте используем изображение дождя в качестве фона для нашего сюжета:
img = plt.imread("rain.jpg")
fig, ax = plt.subplots()
ax.imshow(img, extent=[-5, 80, -5, 30])
ax.scatter(TMIN, PRCP, color="#ebb734")
plt.show()
Аргумент extent
принимает дополнительные аргументы в следующем порядке: horizontal_min
, horizontal_max
, vertical_min
, vertical_max
.