Clustermap
IoT Sensor Correlations
Smart home sensor data correlation matrix
Output
Python
import matplotlib.pyplot as plt
import seaborn as sns
import pandas as pd
import numpy as np
from matplotlib.colors import LinearSegmentedColormap
np.random.seed(42)
# Sensors
sensors = ['Temp_In', 'Temp_Out', 'Humidity', 'CO2', 'Light',
'Motion', 'Door', 'Window', 'HVAC', 'Power']
n = len(sensors)
# Create correlation structure
corr = np.eye(n)
# Temperature correlations
corr[0, 1] = corr[1, 0] = 0.7
corr[0, 8] = corr[8, 0] = -0.6 # HVAC vs temp
corr[2, 0] = corr[0, 2] = -0.4 # Humidity vs temp
# Activity correlations
corr[5, 6] = corr[6, 5] = 0.5 # Motion/door
corr[5, 4] = corr[4, 5] = 0.6 # Motion/light
corr[8, 9] = corr[9, 8] = 0.8 # HVAC/power
# Fill rest with weak correlations
for i in range(n):
for j in range(i+1, n):
if corr[i, j] == 0:
corr[i, j] = corr[j, i] = np.random.uniform(-0.2, 0.2)
df = pd.DataFrame(corr, index=sensors, columns=sensors)
# NEON diverging
neon_div = LinearSegmentedColormap.from_list('neon_div', ['#27D3F5', '#0a0a0f', '#F527B0'])
g = sns.clustermap(df, cmap=neon_div, center=0, vmin=-1, vmax=1,
method='average', linewidths=0.5, linecolor='#1a1a2e',
figsize=(8, 7), dendrogram_ratio=(0.12, 0.12),
annot=True, fmt='.2f', annot_kws={'size': 8, 'color': 'white'},
cbar_pos=(0.01, 0.08, 0.008, 0.12),
tree_kws={'linewidths': 1.5, 'colors': '#27D3F5'})
g.fig.patch.set_facecolor('#0a0a0f')
g.ax_heatmap.set_facecolor('#0a0a0f')
g.ax_heatmap.tick_params(colors='white', labelsize=9)
for ax in [g.ax_row_dendrogram, g.ax_col_dendrogram]:
ax.set_facecolor('#0a0a0f')
g.fig.suptitle('Smart Home Sensor Correlations', color='white', fontsize=14, fontweight='bold', y=1.02)
plt.show()
Library
Matplotlib
Category
Heatmaps & Density
More Clustermap examples
☕