+-
python – Matplotlib矩形与颜色渐变填充
我想在我的轴实例(ax1)坐标系中绘制一个矩形,从左到右,在任意位置使用渐变颜色填充.

我的第一个想法是创建一个路径补丁,并以某种方式将其填充设置为颜色渐变.但根据THIS POST,没有办法做到这一点.

接下来我尝试使用彩条.我使用fig.add_axes([left,bottom,width,height])创建了第二个轴实例ax2,并为其添加了一个颜色条.

ax2 = fig.add_axes([0, 0, width, height/8])
colors = [grad_start_color, grad_end_color]
index  = [0.0, 1.0]
cm = LinearSegmentedColormap.from_list('my_colormap', zip(index, colors))
colorbar.ColorbarBase(ax2, cmap=cm, orientation='horizontal')

但是传递给fig.add_axes()的位置参数在图的坐标系中,并且与ax1的坐标系不匹配.

我怎样才能做到这一点?

最佳答案
我一直在问自己一个类似的问题,并花了一些时间寻找答案,最终发现这很容易在 imshow完成:

from matplotlib import pyplot

pyplot.imshow([[0.,1.], [0.,1.]], 
  cmap = pyplot.cm.Greens, 
  interpolation = 'bicubic'
)

enter image description here

可以指定色彩图,使用什么插值等等.我觉得非常有趣的另一件事是可以指定使用色彩映射的哪个部分.这是通过vmin和vmax完成的:

pyplot.imshow([[64, 192], [64, 192]], 
  cmap = pyplot.cm.Greens, 
  interpolation = 'bicubic', 
  vmin = 0, vmax = 255
)

enter image description here

灵感来自this example

附加说明:

我选择X = [[0,1.],[0,1.]]来使梯度从左向右变化.通过将数组设置为类似X = [[0.,0.],[1.,1.]],您可以从上到下获得渐变.一般情况下,可以指定每个角落的颜色,其中X = [[i00,i01],[i10,i11]],i00,i01,i10和i11指定左上角,右上角的颜色,分别是左下角和右下角.增加X的大小显然允许为更具体的点设置颜色.

点击查看更多相关文章

转载注明原文:python – Matplotlib矩形与颜色渐变填充 - 乐贴网