使用set_array的Matplotlib的PatchCollections:如何将脸色与边缘颜色相匹配?

时间:2014-05-19 13:13:47

标签: python

我编写了一个生成不同尺寸矩形的python代码。但是,我无法使edgecolor与facecolor匹配。这是我的代码的相关部分:

# Mapping row information to geometry and color of plot points
x = np.array(info[0])-time
y = np.array(info[1])
x_width = np.array(info[2])
y_width = np.array(info[3])
colors =  np.array(info[4])
colors = np.log10(colors)

patches = []

# Save rectangle object-datapoints to patches
(time_min,time_max) = (x-x_width/2., x+x_width/2.)
(freq_min, freq_max) = (y-y_width/2., y+y_width/2.)

for i in range(len(x)):
    f_min_plot = max(freq_min[i],f_min)
    patches.append(Rectangle((time_min[i], f_min_plot), x_width[i], freq_max[i]-f_min_plot)) 

fig = pl.figure()
pl.rc('text', usetex=True) 
ax = fig.add_subplot(111)
p = PatchCollection(patches, match_original=False)
p.set_array(colors)
ax.add_collection(p)
cbar = pl.colorbar(p)
#cbar.set_label('$\log_{10}$ SNR', rotation = 270)
pl.xlabel("Time-%.1f" %(time)) 
pl.ylabel("Frequency")
pl.semilogy()
pl.title("%s1 omicron triggers"%(detector))
pl.xlim(-time_interval,time_interval)
pl.ylim(20,2000)
pl.savefig("%s/%s1-omicron-trigs-%.1f-%d.png" %(file_path, detector, time,  time_interval))

此代码生成带黑色边框的默认矩形面部颜色。我需要边框颜色来匹配facecolor。请注意,我尝试使用edgecolor =" none"删除边框。不幸的是,这使得看到一些矩形(宽度小的矩形)的颜色相当困难。我还尝试在Rectangle()语句中添加color = matplotlib.cm.jet(color_norm [i] #color_norm是"规范化"颜色数组:颜色/最大(颜色))(当然还有match_original) PatchCollections()语句中为True。但这也不起作用。在我看来,set_array()最终决定了颜色。我无法找到关于set_array究竟做什么以及如何使用它的详细文档。

有没有办法让这段代码绘制具有相同面色和边缘颜色的矩形?我真诚地感谢你对这个问题的任何帮助。

1 个答案:

答案 0 :(得分:1)

您可以使用set_edgecolor关键字来使用'face'命令,如下所示:

p.set_edgecolor('face')

这对我有用,并将边缘颜色设置为与面部颜色相同的值。