Maison >développement back-end >Tutoriel Python >Tracer des tracés de couleurs dans Matplotlib

Tracer des tracés de couleurs dans Matplotlib

王林
王林avant
2024-02-14 18:30:041039parcourir

在 Matplotlib 中绘制颜色图

Contenu des questions

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 ?


Bonne réponse


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!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer