¿Cómo rellenar las barras de matplotlib con un degradado?

Estaría muy interesado en llenar matplotlib / barras marinas de una gráfica de barras con diferentes gradientes exactamente como se hace aquí (no con matplotlib hasta donde entendí): introduzca la descripción de la imagen aquí

También he comprobado este tema relacionado Pyplot: relleno de degradado vertical bajo la curva? .

¿Es esto solo posible a través de gr-framework: introduzca la descripción de la imagen aquí ¿O hay estrategias alternativas?

Estoy usando la gráfica de barras en el mar con la opción de palette . Imagina que tienes un dataframe simple como:

 df = pd.DataFrame({'a':[1,2,3,4,5], 'b':[10,5,2,4,5]}) 

utilizando por mar

 sns.barplot(df['a'], df['b'], palette='Blues_d') 

Puedes obtener algo como:

introduzca la descripción de la imagen aquí

luego, también puede jugar con la opción de palette y colormap agregando un gradiente de acuerdo con algunos datos como:

 sns.barplot(df['a'], df['b'], palette=cm.Blues(df['b']*10) 

obtención:

introduzca la descripción de la imagen aquí

Espero que ayude.

¿Tal como se muestra en Pyplot: relleno de degradado vertical debajo de la curva? uno puede usar una imagen para crear un gráfico de degradado.

Como las barras son rectangulares, la extensión de la imagen se puede establecer directamente en la posición y el tamaño de la barra. Uno puede recorrer todas las barras y crear una imagen en la posición correspondiente. El resultado es un gráfico de barra de degradado.

 import numpy as np import matplotlib.pyplot as plt fig, ax = plt.subplots() bar = ax.bar([1,2,3,4,5,6],[4,5,6,3,7,5]) def gradientbars(bars): grad = np.atleast_2d(np.linspace(0,1,256)).T ax = bars[0].axes lim = ax.get_xlim()+ax.get_ylim() for bar in bars: bar.set_zorder(1) bar.set_facecolor("none") x,y = bar.get_xy() w, h = bar.get_width(), bar.get_height() ax.imshow(grad, extent=[x,x+w,y,y+h], aspect="auto", zorder=0) ax.axis(lim) gradientbars(bar) plt.show() 

introduzca la descripción de la imagen aquí