Python 在图形下设置颜色贴图

Python 在图形下设置颜色贴图,python,graph,matplotlib,color-mapping,Python,Graph,Matplotlib,Color Mapping,我知道这是有很好的文档记录的,但我很难在代码中实现这一点 我想用彩色地图给图表下面的区域着色。是否可能有一种颜色,即30以上的任何点的红色,以及直到该点的渐变 我正在使用fill_-between方法,但是如果有更好的方法,我很乐意改变这个方法 def plot(sd_values): plt.figure() sd_values=np.array(sd_values) x=np.arange(len(sd_values)) plt.plot(x,sd_valu

我知道这是有很好的文档记录的,但我很难在代码中实现这一点

我想用彩色地图给图表下面的区域着色。是否可能有一种颜色,即30以上的任何点的红色,以及直到该点的渐变

我正在使用fill_-between方法,但是如果有更好的方法,我很乐意改变这个方法

def plot(sd_values):

    plt.figure()
    sd_values=np.array(sd_values)
    x=np.arange(len(sd_values))
    plt.plot(x,sd_values, linewidth=1)
    plt.fill_between(x,sd_values, cmap=plt.cm.jet)
    plt.show()
这是目前的结果。我已经尝试了
axvspan
,但是没有
cmap
作为选项。为什么下图不显示颜色贴图


我不确定
cmap
参数是否应该是
fill\u-between
绘图命令的一部分。在您的情况下,可能需要使用
fill()
命令

这些填充命令可创建多边形或多边形集合。多边形集合可以采用
cmap
,但使用
fill
无法提供其应上色的数据

(据我所知)当然不可能用渐变填充单个多边形

下一个最好的办法就是假装。可以打印着色图像并基于创建的多边形对其进行剪裁

# create some sample data
x = np.linspace(0, 1)
y = np.sin(4 * np.pi * x) * np.exp(-5 * x) * 120

fig, ax = plt.subplots()

# plot only the outline of the polygon, and capture the result
poly, = ax.fill(x, y, facecolor='none')

# get the extent of the axes
xmin, xmax = ax.get_xlim()
ymin, ymax = ax.get_ylim()

# create a dummy image
img_data = np.arange(ymin,ymax,(ymax-ymin)/100.)
img_data = img_data.reshape(img_data.size,1)

# plot and clip the image
im = ax.imshow(img_data, aspect='auto', origin='lower', cmap=plt.cm.Reds_r, extent=[xmin,xmax,ymin,ymax], vmin=y.min(), vmax=30.)

im.set_clip_path(poly)
给图像一个范围,该范围基本上在整个轴上拉伸图像。然后,剪辑路径使其仅显示在绘制
填充
多边形的位置


我认为您只需一次绘制一个数据,如:

    import numpy
    import matplotlib.pyplot as plt
    import matplotlib.cm as cm
    import matplotlib.colors as colors        

    # Create fake data
    x = numpy.linspace(0,4)
    y = numpy.exp(x)

    # Now plot one by one
    bar_width = x[1] - x[0]  # assuming x is linealy spaced
    for pointx, pointy in zip(x,y):
        current_color = cm.jet( min(pointy/30, 30)) # maximum of 30
        plt.bar(pointx, pointy, bar_width, color = current_color)       

    plt.show()
导致:

谢谢你的帮助,这不是我想要的,因为我真的需要它是一种超过一定值的颜色,但它会很有用!用这种方法当然是可能的。我更新了我的答案。注意
imshow
vmin
vmax
参数是如何控制阴影的。在我的代码中,
img_数据是什么<代码>sd_值
?此外,奇怪的是,当我绘制它时,颜色是反向的,即顶部为白色,底部为深红色
img_data
是一个数组,其值在y轴的最小值和最大值之间运行。你不必对它做任何事。您可以将cmap从
Reds
更改为
Reds\u r
以更改颜色。啊,是的!非常感谢。