如何用渐变填充matplotlib条?

cat*_*t84 6 python gradient matplotlib bar-chart seaborn

我对填充具有不同渐变的条形图的 matplotlib/seaborn 条非常感兴趣,就像这里所做的那样(据我所知,不是使用 matplotlib): 在此处输入图片说明

我还检查了这个相关的主题Pyplot:曲线下的垂直渐变填充?.

这是否只能通过 gr-framework 实现: 在此处输入图片说明 或者有替代策略吗?

Imp*_*est 10

正如Pyplot中所描绘的:曲线下的垂直渐变填充?可以使用图像来创建渐变图。

由于条是矩形的,因此图像的范围可以直接设置为条的位置和大小。可以循环遍历所有条形并在相应位置创建图像。结果是渐变条形图。

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() 
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明


Fab*_*nna 5

我正在使用带有选项的seaborn barplotpalette。想象一下您有一个简单的数据框,例如:

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

使用seaborn:

sns.barplot(df['a'], df['b'], palette='Blues_d')
Run Code Online (Sandbox Code Playgroud)

你可以获得类似的东西:

在此输入图像描述

然后您还可以使用该palette选项并colormap根据一些数据添加渐变,例如:

sns.barplot(df['a'], df['b'], palette=cm.Blues(df['b']*10)
Run Code Online (Sandbox Code Playgroud)

获得:

在此输入图像描述

希望有帮助。

  • 非常感谢,但我正在寻找每个条形中相同的渐变,而不是不同条形之间的渐变! (3认同)