Anwendung der verschiedenen Farbkarte zur Maske

Ich habe ein Bild und eine Maske und möchte je nach Maske zwei verschiedene Farbschemata anwenden. Die nicht maskierten Werte werden beispielsweise mit einer grauen Farbkarte und den mit der Jet-Farbkarte maskierten Werten aufgezeichnet.

Ist so etwas in Matplotlib möglich?

  • Speicherverlust beim Einbetten und Aktualisieren eines matplotlib-Graphen in einer PyQt-GUI
  • Matplotlib savefig Bild trimmen
  • Python Matplotlib 3D Linie erscheint durch die Oberfläche
  • Ungerade Linienartefakte erscheinen in matplotlib mplot3d Handlung mit PolyCollection
  • Mehrere Zeiträume von Pandas Dataframe
  • Verlängerung eines Liniensegments in Matplotlib
  • One Solution collect form web for “Anwendung der verschiedenen Farbkarte zur Maske”

    Mein Ansatz wäre, ein maskiertes, numpy Array zu kreieren und es auf dem Graustufenbild zu überlagern. Die maskierten Werte setzen sich auf eine Deckkraft von 0 aus und machen sie unsichtbar und zeigen damit das Graustufenbild unten.

     im = np.array([[2, 3, 2], [3, 4, 1], [6, 1, 5]]) mask = np.array([[False, False, True], [False, True, True], [False, False, False]]) # note that the mask is inverted (~) to show color where mask equals true im_ma = np.ma.array(im, mask=~mask) # some default keywords for imshow kwargs = {'interpolation': 'none', 'vmin': im.min(), 'vmax': im.max()} fig, ax = plt.subplots(1,3, figsize=(10,5), subplot_kw={'xticks': [], 'yticks': []}) ax[0].set_title('"Original" data') ax[0].imshow(im, cmap=plt.cm.Greys_r, **kwargs) ax[1].set_title('Mask') ax[1].imshow(mask, cmap=plt.cm.binary, interpolation='none') ax[2].set_title('Masked data in color (jet)') ax[2].imshow(im, cmap=plt.cm.Greys_r, **kwargs) ax[2].imshow(im_ma, cmap=plt.cm.jet, **kwargs) 

    Bildbeschreibung hier eingeben

    Wenn Sie keinen vmin und vmin Wert für imshow , wird die Colormap auf den Min und Maximum aus dem unmaskierten Teil des Arrays ausgedehnt. Um also eine vergleichbare Colormap zu erhalten, die min und max aus dem unmasked Array zu imshow .

    Python ist die beste Programmiersprache der Welt.