Heim >Backend-Entwicklung >Python-Tutorial >Zeichnen Sie Farbdiagramme in Matplotlib

Zeichnen Sie Farbdiagramme in Matplotlib

王林
王林nach vorne
2024-02-14 18:30:041039Durchsuche

在 Matplotlib 中绘制颜色图

Frageninhalt

Mir gefallen die zusätzlichen Farbkarten in Plotly sehr gut, wie zum Beispiel „Dense“ oder „Ice“. Dennoch verwende ich derzeit Matplotlib für die meisten meiner Plots.

Gibt es eine Möglichkeit, Pyplot-Farbkarten in Matplotlib-Figuren zu verwenden?

Wenn ich die Farbkarte „Ice“ als Beispiel nehme, sind die einzigen Ergebnisse, die ich erhalte, RGB-Farben als Zeichenfolgen

import plotly.express as px

px.colors.sequential.ice

Das ist nur eine Rücksendung

['rgb(3, 5, 18)',
 'rgb(25, 25, 51)',
 'rgb(44, 42, 87)',
 'rgb(58, 60, 125)',
 'rgb(62, 83, 160)',
 'rgb(62, 109, 178)',
 'rgb(72, 134, 187)',
 'rgb(89, 159, 196)',
 'rgb(114, 184, 205)',
 'rgb(149, 207, 216)',
 'rgb(192, 229, 232)',
 'rgb(234, 252, 253)']

Das Problem ist, dass ich nicht weiß, wie ich es in Matplotlib-Plots verwenden soll. Ich habe versucht, eine benutzerdefinierte Farbkarte zu erstellen

my_cmap = matplotlib.colors.listedcolormap(px.colors.sequential.ice, name='my_colormap_name')

Aber das gibt mir bei der Verwendung in einer Handlung den folgenden Fehler:

ValueError: Invalid RGBA argument: 'rgb(3, 5, 18)'

Weiß jemand, wie man es richtig umwandelt?


Richtige Antwort


Sie müssen den RGB-String dekodieren:

import plotly.express as px
import matplotlib.pyplot as plt
import matplotlib.colors as mcolors

samples = 20
ice = px.colors.sample_colorscale(px.colors.sequential.ice, samples)
rgb = [px.colors.unconvert_from_rgb_255(px.colors.unlabel_rgb(c)) for c in ice]

cmap = mcolors.listedcolormap(rgb, name='ice', n=samples)

Demo:

import numpy as np

gradient = np.linspace(0, 1, 256)
gradient = np.vstack((gradient, gradient))
plt.imshow(gradient, aspect='auto', cmap=cmap)
plt.show()

Ausgabe:

Das obige ist der detaillierte Inhalt vonZeichnen Sie Farbdiagramme in Matplotlib. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:stackoverflow.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen