J'aime beaucoup les cartes de couleurs supplémentaires dans plotly, telles que "Dense" ou "Ice". Néanmoins, j'utilise actuellement matplotlib pour la plupart de mes tracés.
Existe-t-il un moyen d'utiliser les palettes de couleurs pyplot dans les figures matplotlib ?
Quand je prends la palette de couleurs "ice" comme exemple, les seuls résultats que j'obtiens sont des couleurs RVB sous forme de chaînes
import plotly.express as px px.colors.sequential.ice
C'est juste un retour
['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)']
Le problème est que je ne sais pas comment l'utiliser dans les tracés matplotlib. J'ai essayé de créer une palette de couleurs personnalisée
my_cmap = matplotlib.colors.listedcolormap(px.colors.sequential.ice, name='my_colormap_name')
Mais cela me donne l'erreur suivante lorsqu'il est utilisé dans un tracé :
ValueError: Invalid RGBA argument: 'rgb(3, 5, 18)'
Est-ce que quelqu'un sait comment le convertir correctement ?
Vous devez décoder la chaîne RVB :
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)
Démo :
import numpy as np gradient = np.linspace(0, 1, 256) gradient = np.vstack((gradient, gradient)) plt.imshow(gradient, aspect='auto', cmap=cmap) plt.show()
Sortie :
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!