Python Matplotlib:检索等高线图中使用的颜色

3
我用10个等高线制作了这样一张等高线地图,如下所示:

CS = plt.contour(X, Y, Z, levels=levels)

levels 是一个包含10个数字的列表。

我对matplotlib使用的颜色感到满意 - 我认为它从默认的颜色映射中选择了10个漂亮间隔的颜色 - 但是我如何检索实际使用的颜色呢?(比如作为RGB值的列表)。原因是我想建立一个定制的颜色条(通过在plt.hlines命令中使用这些颜色)。

2个回答

5
如果你想要10个级别的颜色映射"jet":
import matplotlib.cm as cm

cm.jet(np.linspace(0, 1, 10))
Out[31]: 
array([[ 0.        ,  0.        ,  0.5       ,  1.        ],
       [ 0.        ,  0.        ,  0.99910873,  1.        ],
       [ 0.        ,  0.37843137,  1.        ,  1.        ],
       [ 0.        ,  0.83333333,  1.        ,  1.        ],
       [ 0.30044276,  1.        ,  0.66729918,  1.        ],
       [ 0.66729918,  1.        ,  0.30044276,  1.        ],
       [ 1.        ,  0.90123457,  0.        ,  1.        ],
       [ 1.        ,  0.48002905,  0.        ,  1.        ],
       [ 0.99910873,  0.07334786,  0.        ,  1.        ],
       [ 0.5       ,  0.        ,  0.        ,  1.        ]])

返回的是RGBA值的数组。

谢谢!我相信这已经在某个地方有记录了,但我无法在任何地方找到直接的答案。 - Peter B

1
值得注意的是:由contourf返回的对象具有get_cmap方法,因此
   cf = plt.contourf( ... )
   cmap = cf.get_cmap()
   colors = cmap(np.linspace(0, 1, 10))

可能会有用。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接