Ho una superficie 3D, accompagnata da una barra di colore, generato daCome ignorare NaN in colorbar?
surf = ax.plot_surface(xv, yv, zv, ...)
cb = fig.colorbar(surf)
Quando funziona, sembra che questo:
Il problema è che alcuni dei valori può essere NaN, nel qual caso il colorbar non riesce a generare, in questo modo:
C:\Users\Sam\Anaconda\lib\site-packages\matplotlib\colorbar.py:581: RuntimeWarning: invalid value encountered in greater
inrange = (ticks > -0.001) & (ticks < 1.001)
C:\Users\Sam\Anaconda\lib\site-packages\matplotlib\colorbar.py:581: RuntimeWarning: invalid value encountered in less
inrange = (ticks > -0.001) & (ticks < 1.001)
C:\Users\Sam\Anaconda\lib\site-packages\matplotlib\colors.py:576: RuntimeWarning: invalid value encountered in less
cbook._putmask(xa, xa < 0.0, -1)
Potrei provare a sostituire i valori NaN di zv con 0 (zv[isnan(zv)] = 0
), ma il grafico risultante ha dirupi verticali, che confondono e oscurano alcune delle caratteristiche e distorce la barra dei colori.
Quello che voglio è un modo per la barra dei colori di ignorare i valori NaN. Per fare ciò, ho potuto impostare manualmente la barra dei colori (su amin(zv[~isnan(zv)])
e amax(zv[~isnan(zv)])
) dopo che è stata creata, ma non so come farlo.
Qualche suggerimento su come ignorare i NaN quando si calcola la barra dei colori e quando si colora una superficie 3D?
Che vi appiattire ZV. zv deve essere un array 2D. – charmoniumQ