matplotlib 添加从全透明到全彩色的自定义颜色条(删除瑕疵)

zhte4eai  于 2023-10-24  发布在  其他
关注(0)|答案(1)|浏览(98)

我正试图添加一个自定义的颜色栏到我的matplotlib图,从全透明(白色)运行到全彩色(mediumpurple)。
我已经走了很远,但仍然有一些问题。我这样做的方式,创建每个补丁之间的线条,这是可见的。这创造了文物,当我试图使颜色条看起来流畅。

fig, ax = plt.subplots(figsize=(10, 10))
max_val = 4
transparency_ticks = 500
color = mpl.colors.to_rgba(color)
cmap = mpl.colors.ListedColormap([(*color[:3], (1+a)/transparency_ticks) for a in range(transparency_ticks)])
norm = mpl.colors.Normalize(vmin=0, vmax=max_val)
cax = fig.add_axes([0.8, 0.17, 0.05, 0.5])
mpl.colorbar.ColorbarBase(cax, cmap=cmap, norm=norm, orientation='vertical')

这是transparency_ticks = 500的图像。所以你可以看到每个补丁之间的线条。

这是transparency_ticks = 5000的图像。你看不到这些线条了,因为它们已经和其他部分混合在一起了,但是这些线条使颜色条看起来更暗了。

hi3rlvi2

hi3rlvi21#

使用具有各种饱和度的HSV,而不是RGBA上的级别:

fig, ax = plt.subplots(figsize=(10, 10))
max_val = 4
transparency_ticks = 50
colors = [mpl.colors.hsv_to_rgb((0.83, a/transparency_ticks, 1)) 
          for a in range(transparency_ticks)]
cmap = mpl.colors.ListedColormap(colors)
norm = mpl.colors.Normalize(vmin=0, vmax=max_val)
cax = fig.add_axes([0.8, 0.17, 0.05, 0.5])
mpl.colorbar.ColorbarBase(cax, cmap=cmap, norm=norm, orientation='vertical')

相关问题