Normalizzazioni della mappa dei colori SymLogNorm #

Dimostrazione dell'uso della norma per mappare le mappe dei colori sui dati in modi non lineari.

Set di dati sintetici costituito da due gobbe, una negativa e una positiva, la positiva con 8 volte l'ampiezza. Linearmente, la gobba negativa è quasi invisibile, ed è molto difficile vedere qualsiasi dettaglio del suo profilo. Con il ridimensionamento logaritmico applicato sia ai valori positivi che a quelli negativi, è molto più facile vedere la forma di ciascuna gobba.

Vedi SymLogNorm.

import numpy as np
import matplotlib.pyplot as plt
import matplotlib.colors as colors


def rbf(x, y):
    return 1.0 / (1 + 5 * ((x ** 2) + (y ** 2)))

N = 200
gain = 8
X, Y = np.mgrid[-3:3:complex(0, N), -2:2:complex(0, N)]
Z1 = rbf(X + 0.5, Y + 0.5)
Z2 = rbf(X - 0.5, Y - 0.5)
Z = gain * Z1 - Z2

shadeopts = {'cmap': 'PRGn', 'shading': 'gouraud'}
colormap = 'PRGn'
lnrwidth = 0.5

fig, ax = plt.subplots(2, 1, sharex=True, sharey=True)

pcm = ax[0].pcolormesh(X, Y, Z,
                       norm=colors.SymLogNorm(linthresh=lnrwidth, linscale=1,
                                              vmin=-gain, vmax=gain, base=10),
                       **shadeopts)
fig.colorbar(pcm, ax=ax[0], extend='both')
ax[0].text(-2.5, 1.5, 'symlog')

pcm = ax[1].pcolormesh(X, Y, Z, vmin=-gain, vmax=gain,
                       **shadeopts)
fig.colorbar(pcm, ax=ax[1], extend='both')
ax[1].text(-2.5, 1.5, 'linear')
normalizzazione della mappa dei colori symlognorm
Text(-2.5, 1.5, 'linear')

Per trovare la migliore visualizzazione per un particolare set di dati, potrebbe essere necessario sperimentare più scale di colori diverse. Oltre al SymLogNormridimensionamento, esiste anche l'opzione di utilizzo AsinhNorm(sperimentale), che ha una transizione più uniforme tra le regioni lineari e logaritmiche della trasformazione applicata ai valori dei dati, "Z". Nei grafici sottostanti, potrebbe essere possibile vedere artefatti simili a contorni attorno a ciascuna gobba nonostante non vi siano caratteristiche nitide nel set di dati stesso. Il asinhridimensionamento mostra un'ombreggiatura più uniforme di ogni gobba.

fig, ax = plt.subplots(2, 1, sharex=True, sharey=True)

pcm = ax[0].pcolormesh(X, Y, Z,
                       norm=colors.SymLogNorm(linthresh=lnrwidth, linscale=1,
                                              vmin=-gain, vmax=gain, base=10),
                       **shadeopts)
fig.colorbar(pcm, ax=ax[0], extend='both')
ax[0].text(-2.5, 1.5, 'symlog')

pcm = ax[1].pcolormesh(X, Y, Z,
                       norm=colors.AsinhNorm(linear_width=lnrwidth,
                                             vmin=-gain, vmax=gain),
                       **shadeopts)
fig.colorbar(pcm, ax=ax[1], extend='both')
ax[1].text(-2.5, 1.5, 'asinh')


plt.show()
normalizzazione della mappa dei colori symlognorm

Tempo di esecuzione totale dello script: (0 minuti 3,374 secondi)

Galleria generata da Sphinx-Gallery