KDE Plot
Wine Cellar Temperature Distribution
KDE of wine storage temperatures with optimal aging zones.
Output
Python
import matplotlib.pyplot as plt
import numpy as np
from scipy import stats
np.random.seed(210)
temps = np.random.normal(13, 2, 1000)
temps = temps[(temps > 5) & (temps < 22)]
kde = stats.gaussian_kde(temps)
x = np.linspace(5, 22, 500)
y = kde(x)
colors = ['#1e3a8a', '#3b82f6', '#22d3ee', '#fbbf24', '#f97316', '#dc2626']
fig, ax = plt.subplots(figsize=(12, 6), facecolor='#ffffff')
ax.set_facecolor('#ffffff')
for i in range(len(x)-1):
norm_val = (x[i] - 5) / 17
color_idx = int(norm_val * (len(colors) - 1))
color_idx = max(0, min(color_idx, len(colors)-1))
ax.fill_between(x[i:i+2], y[i:i+2], alpha=0.6, color=colors[color_idx])
ax.plot(x, y, color='#374151', linewidth=2.5)
ax.axvspan(11, 14, alpha=0.2, color='#22d3ee', label='Ideal Aging (11-14C)')
ax.axvspan(7, 10, alpha=0.1, color='#3b82f6', label='White Wine (7-10C)')
ax.axvspan(15, 18, alpha=0.1, color='#fbbf24', label='Red Serving (15-18C)')
ax.set_xlabel('Temperature (C)', fontsize=12, color='#1f2937', fontweight='500')
ax.set_ylabel('Density', fontsize=12, color='#1f2937', fontweight='500')
ax.set_title('Wine Cellar Temperature Distribution', fontsize=16, color='#1f2937', fontweight='bold', pad=15)
ax.tick_params(colors='#374151', labelsize=10)
for spine in ax.spines.values():
spine.set_color('#d1d5db')
ax.legend(loc='upper right', facecolor='#f9fafb', edgecolor='#d1d5db', labelcolor='#374151', fontsize=9)
ax.grid(True, alpha=0.3, color='#e5e7eb')
ax.set_xlim(5, 22)
plt.tight_layout()
plt.show()
Library
Matplotlib
Category
Statistical
☕