Python 在图形下设置颜色贴图
我知道这是有很好的文档记录的,但我很难在代码中实现这一点 我想用彩色地图给图表下面的区域着色。是否可能有一种颜色,即30以上的任何点的红色,以及直到该点的渐变 我正在使用fill_-between方法,但是如果有更好的方法,我很乐意改变这个方法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
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
以更改颜色。啊,是的!非常感谢。