Tramite Python e la libreria Matplotlib è possibile creare le cosiddette "Heatmaps", come alternativa ad un grafico 3D. In alcuni casi la visualizzazione può essere più semplice e immediata, anche carina graficamente. Tutta la documentazione dettagliata (in inglese, che andrete a leggere di sicuro) si trova su matplotlib.org.
Vediamo un esempio: equazione differenziale della diffusione termica, condizione d/dt=0, studiamo l'andamento radiale. Dall'equazione differenziale di partenza: ∇2 = 0 --> (1/r)d[rdT/dr]/dr = 0, da cui si ottiene: T(r)=C2+C1ln(r)
Sostituendo le condizioni al contorno e altri dati di esempio:
- r1=N/3
- r2=N/2
- T(r2)=T2 --> C1=T1-(T2-T1)*ln(r1)/ln(r2/r1)
- T(r1)=T1 --> C2=T1-C1*ln(r1)
Nell'esempio abbiamo una griglia 30x30, al centro una sorgente calda (nell'immagine, colore rosso) e allontanandoci dal centro (secondo le condizioni fissate) abbiamo una temperatura inferiore, quindi mostrata con il giallo. Per questo esempio ho scelto la scala di colori 'autumn', mi sembrava la più indicata. Come mostro nella mia immagine, le scale di colori che si possono scegliere sono moltissime (ne ho elencate solo alcune, tutte non ci stavano, sul sito ufficiale troviamo anche le altre).
Ecco il codice Python per questo programma:
import numpy as np
from matplotlib import pyplot as plt
N=30
V=np.zeros((N,N))
def f(x,y):
r1=(int)(N/3)
r2=(int)(N/2)
T1=40
T2=30
T1+=273.15
T2+=273.15
C1=T1-(T2-T1)*np.log(r1)/np.log(r2/r1)
C2=T1-C1*np.log(r1)
return C2+C1*0.5*np.log(x**2+y**2)
for j in range(N):
for i in range(N):
V[i][j]=f(i-N/2,j-N/2)
V[(int)(N/2)][(int)(N/2)]=V[(int)(N/2-1)][(int)(N/2)]
color='autumn'
plt.imshow(V,color)
plt.title("Andamento temperatura T(r)")
plt.show()
Infine ecco l'immagine (ora che la riguardo, effettivamente potevo cambiare scala e rendere più bilanciata la proporzione rosso-giallo... Pazienza dai). Rispetto ad un grafico 3D o altro (come es. avevamo visto nell'esempio della curva di Gompertz), in alcune situazioni le "mappe di calore" (Heatmap) possono essere più utili e di impatto immediato, come ho detto nel titolo in alcuni casi anche "bello visual".

Conoscete le Heatmap? Sicuramente le avrete viste, magari non ci avete fatto caso, ora sapete cosa sono e (volendo) anche come si creano 🙂