Python – Tracciare colorato griglia basata su valori

Ho cercato qui e in rete. Ho trovato in qualche modo vicino domande/risposte per quello che voglio, ma ancora non è riuscito a raggiungere a quello che sto cercando.

Ho un array, ad esempio, 100 valori. I valori sono nel range da 0 a 100.
Voglio trama di questa matrice come una griglia, riempiendo le piazze in base ai valori dell’array.

Le soluzioni che ho trovato finora sono come le seguenti:

Disegno modello di griglia in matplotlib

e

personalizzato matplotlib trama : scacchiera, come il tavolo con di cellule colorate

Negli esempi che ho citato, gamme di colori variano e non sono fisse.

Tuttavia, ciò che mi chiedo è se posso impostare gli intervalli di valori specifici e colori.
Per esempio,
se i valori sono compresi tra 10 e 20, lasciate che il colore del quadrato della griglia rossa.
altrimenti, se i valori sono compresi tra i 20 e i 30 anni, lasciate che il colore blu. ecc.

Come questo possa essere realizzato in python?

InformationsquelleAutor philippos | 2017-05-15

 

2 Replies
  1. 14

    È possibile creare un ListedColormap per i colori personalizzati e di colore BoundaryNorms di soglia i valori.

    import matplotlib.pyplot as plt
    from matplotlib import colors
    import numpy as np
    
    data = np.random.rand(10, 10) * 20
    
    # create discrete colormap
    cmap = colors.ListedColormap(['red', 'blue'])
    bounds = [0,10,20]
    norm = colors.BoundaryNorm(bounds, cmap.N)
    
    fig, ax = plt.subplots()
    ax.imshow(data, cmap=cmap, norm=norm)
    
    # draw gridlines
    ax.grid(which='major', axis='both', linestyle='-', color='k', linewidth=2)
    ax.set_xticks(np.arange(-.5, 10, 1));
    ax.set_yticks(np.arange(-.5, 10, 1));
    
    plt.show()

    Conseguente;
    Python - Tracciare colorato griglia basata su valori

    Per di più, è possibile controllare questo matplotlib esempio.

  2. 0

    Dipende da che unità di misura è bisogno del tuo colore, ma solo una semplice istruzione if dovrebbe fare il trucco.

    def find_colour(_val):
        # Colour value constants
        _colours = {"blue": [0.0, 0.0, 1.0],
                    "green": [0.0, 1.0, 0.00],
                    "yellow": [1.0, 1.0, 0.0],
                    "red": [1.0, 0.0, 0.0]}
    
        # Map the value to a colour
        _colour = [0, 0, 0]
        if _val > 30:
            _colour = _colours["red"]
        elif _val > 20:
            _colour = _colours["blue"]
        elif _val > 10:
            _colour = _colours["green"]
        elif _val > 0:
            _colour = _colours["yellow"]
    
        return tuple(_colour)

    E convertire solo che tupla qualunque unità di cui avete bisogno ad esempio RGBA(..). È quindi possibile implementare i metodi che ti sembra di aver già trovato a raggiungere la griglia.

    • Grazie per la risposta. Tuttavia, io credo che @umutto inviato è più facile da applicare. Per essere onesti, non sapevo come utilizzare la funzione nella stampa (scusate, la mia ignoranza in python)

Lascia un commento