import pandas as pd
import matplotlib.pyplot as plt
= {
data 'Dzień': ['Poniedziałek', 'Wtorek', 'Środa', 'Czwartek', 'Piątek'] * 3,
'Pora dnia': ['Rano']*5 + ['Popołudnie']*5 + ['Wieczór']*5,
'Liczba klientów': [50, 60, 55, 65, 80, # Rano
120, 130, 125, 140, 160, # Popołudnie
90, 100, 95, 110, 120] # Wieczór
}
= pd.DataFrame(data)
df
= df.pivot(index='Dzień', columns='Pora dnia', values='Liczba klientów')
heatmap_data
plt.imshow(heatmap_data,='YlOrRd', # paleta od żółtego (nisko) do czerwonego (wysoko)
cmap='auto') # automatyczne dopasowanie proporcji
aspect
= plt.colorbar()
cbar 'Liczba klientów', rotation=270, labelpad=15)
cbar.set_label(
=range(len(heatmap_data.columns)),
plt.xticks(ticks=heatmap_data.columns,
labels=45,
rotation='right')
ha=range(len(heatmap_data.index)),
plt.yticks(ticks=heatmap_data.index)
labels
'Pora dnia')
plt.xlabel('Dzień tygodnia')
plt.ylabel('Średnia liczba klientów w sklepie')
plt.title(
plt.tight_layout() plt.show()
38 Matplotlib - mapa ciepła
Mapa ciepła (ang. heatmap) to dwuwymiarowa wizualizacja, w której wartości liczbowe są reprezentowane za pomocą kolorów. Intensywność koloru odpowiada natężeniu (wartości) w konkretnym punkcie siatki.
Główne zastosowania map ciepła
- Macierze korelacji
- Pozwalają szybko zidentyfikować silne i słabe powiązania między zmiennymi w zbiorze danych.
- Ułatwiają wstępną selekcję cech np. w modelowaniu predykcyjnym.
- Pozwalają szybko zidentyfikować silne i słabe powiązania między zmiennymi w zbiorze danych.
- Analiza czasowo-przestrzenna
- Wizualizacja natężenia zdarzeń (np. sprzedaży, ruchu sieciowego) na osi czasu versus kategorie lub strefy.
- Pomaga wykrywać wzorce sezonowe, dobowe lub tygodniowe.
- Wizualizacja natężenia zdarzeń (np. sprzedaży, ruchu sieciowego) na osi czasu versus kategorie lub strefy.
- Mapy geograficzne
- Prezentacja gęstości zdarzeń lub wartości (np. zachorowań, wypadków) na obszarach geograficznych.
- Umożliwiają szybkie wyłonienie „gorących punktów” (ang. hotspots).
- Prezentacja gęstości zdarzeń lub wartości (np. zachorowań, wypadków) na obszarach geograficznych.
- Analiza zachowań użytkownika
- Śledzenie kliknięć, ruchu myszki lub przewijania na stronach WWW/aplikacjach.
- Optymalizacja układu elementów interfejsu pod kątem użyteczności.
- Śledzenie kliknięć, ruchu myszki lub przewijania na stronach WWW/aplikacjach.
- Monitorowanie zasobów i wydajności
- Wizualizacja obciążenia serwerów, zużycia pamięci czy obrotów produkcji w czasie rzeczywistym.
- Pomaga wyłapać anomalie lub przeciążenia.
- Wizualizacja obciążenia serwerów, zużycia pamięci czy obrotów produkcji w czasie rzeczywistym.
- Wykrywanie anomalii i odchyleń
- Identyfikacja nietypowych odczytów np. w danych medycznych, finansowych czy sieciowych.
- Szybkie wskazanie obszarów wymagających dalszej analizy.
- Identyfikacja nietypowych odczytów np. w danych medycznych, finansowych czy sieciowych.
import pandas as pd
import matplotlib.pyplot as plt
= {
data 'Dzień': ['Poniedziałek', 'Wtorek', 'Środa', 'Czwartek', 'Piątek'] * 3,
'Pora dnia': ['Rano']*5 + ['Popołudnie']*5 + ['Wieczór']*5,
'Liczba klientów': [50, 60, 55, 65, 80, # Rano
120, 130, 125, 140, 160, # Popołudnie
90, 100, 95, 110, 120] # Wieczór
}
= pd.DataFrame(data)
df
= df.pivot(index='Dzień', columns='Pora dnia', values='Liczba klientów')
heatmap_data
= plt.subplots()
fig, ax
= ax.imshow(
im
heatmap_data,='YlOrRd', # paleta od żółtego (nisko) do czerwonego (wysoko)
cmap='auto' # automatyczne dopasowanie proporcji
aspect
)
= fig.colorbar(im, ax=ax)
cbar 'Liczba klientów', rotation=270, labelpad=15)
cbar.set_label(
range(len(heatmap_data.columns)))
ax.set_xticks(=45, ha='right')
ax.set_xticklabels(heatmap_data.columns, rotationrange(len(heatmap_data.index)))
ax.set_yticks(
ax.set_yticklabels(heatmap_data.index)
'Pora dnia')
ax.set_xlabel('Dzień tygodnia')
ax.set_ylabel('Średnia liczba klientów w sklepie')
ax.set_title(
fig.tight_layout() plt.show()
import matplotlib.pyplot as plt
import numpy as np
# Dane przykładowe
= np.array([
data 23, 45, 12, 34, 56],
[33, 54, 22, 43, 66],
[12, 34, 15, 28, 39],
[44, 55, 31, 47, 62]
[
])
# Etykiety osi
= ['Poniedziałek', 'Wtorek', 'Środa', 'Czwartek']
days = ['9–11', '11–13', '13–15', '15–17', '17–19']
hours
# Tworzenie mapy ciepła
=(8, 6))
plt.figure(figsize= plt.imshow(data, cmap='Greens')
cax
# Etykiety osi
=np.arange(len(hours)), labels=hours, rotation=45, ha='right')
plt.xticks(ticks=np.arange(len(days)), labels=days)
plt.yticks(ticks
# Dodanie wartości liczbowych
for i in range(data.shape[0]):
for j in range(data.shape[1]):
str(data[i, j]), ha='center', va='center', color='black')
plt.text(j, i,
# Pasek kolorów
='vertical', label='Liczba klientów')
plt.colorbar(cax, orientation
# Tytuł i układ
'Liczba klientów w sklepie wg dnia i godziny')
plt.title(
plt.tight_layout()
# Wyświetlenie wykresu
plt.show()
import matplotlib.pyplot as plt
import numpy as np
= np.array([
data 23, 45, 12, 34, 56],
[33, 54, 22, 43, 66],
[12, 34, 15, 28, 39],
[44, 55, 31, 47, 62]
[
])
= ['Poniedziałek', 'Wtorek', 'Środa', 'Czwartek']
days = ['9–11', '11–13', '13–15', '15–17', '17–19']
hours
= plt.subplots(figsize=(8, 6))
fig, ax = ax.imshow(data, cmap='Greens')
cax
len(hours)))
ax.set_xticks(np.arange(=45, ha='right')
ax.set_xticklabels(hours, rotationlen(days)))
ax.set_yticks(np.arange(
ax.set_yticklabels(days)
for i in range(data.shape[0]):
for j in range(data.shape[1]):
str(data[i, j]), ha='center', va='center', color='black')
ax.text(j, i,
=ax, orientation='vertical', label='Liczba klientów')
fig.colorbar(cax, ax
'Liczba klientów w sklepie wg dnia i godziny')
ax.set_title(
fig.tight_layout()
plt.show()