A meno che la grafica non sia enorme, molti di quei 3 milioni di punti si sovrappongono. (Un'immagine 400x600 240K ha solo puntini ...)
Quindi la cosa più semplice da fare sarebbe quella di prendere un campione di dire, 1000 punti, dai dati:
import random
delta_sample=random.sample(delta,1000)
e proprio trama che .
Ad esempio:
import matplotlib.pyplot as plt
import matplotlib.cm as cm
import numpy as np
import random
fig = plt.figure()
fig.subplots_adjust(bottom=0.2)
ax = fig.add_subplot(111)
N=3*10**6
delta=np.random.normal(size=N)
vf=np.random.normal(size=N)
dS=np.random.normal(size=N)
idx=random.sample(range(N),1000)
plt.scatter(delta[idx],vf[idx],c=dS[idx],alpha=0.7,cmap=cm.Paired)
plt.show()
Oppure, se avete bisogno di prestare maggiore attenzione ai valori anomali, allora forse si potrebbe bin i dati utilizzando np.histogram
, e poi comporre un delta_sample
che ha rappresentanti ogni cestino
Sfortunatamente, quando si utilizza np.histogram
non penso che ci sia un modo semplice per associare i raccoglitori ai singoli punti di dati. Una soluzione semplice, ma approssimativa è quello di utilizzare la posizione di un punto nel o sul bordo bin sé come proxy per i punti in esso:
xedges=np.linspace(-10,10,100)
yedges=np.linspace(-10,10,100)
zedges=np.linspace(-10,10,10)
hist,edges=np.histogramdd((delta,vf,dS), (xedges,yedges,zedges))
xidx,yidx,zidx=np.where(hist>0)
plt.scatter(xedges[xidx],yedges[yidx],c=zedges[zidx],alpha=0.7,cmap=cm.Paired)
plt.show()
Oltre decine di migliaia di punti, potrebbe essere preferibile una qualche forma di rappresentazione grafica raster sia per la velocità che per l'effettiva fruibilità. –
Devi scegliere una risposta e contrassegnarla come accettata. – levesque