mollview:使用matplotlib色彩图并更改背景颜色

时间:2015-12-01 15:27:16

标签: matplotlib healpy

我试图在healpy.mollview上使用其他彩色地图 我成功完成了这段代码

from healpy import mollview
from pylab import arange, show, cm
m = arange(768)
mollview(m, cmap=cm.bwr)
show()

但我得到一个意想不到的蓝色背景,我无法将其设置为白色

3 个答案:

答案 0 :(得分:6)

healpy似乎对其默认色彩映射进行了修改,以更改颜色超出范围时发生的情况。因此,在将cm.bwr提交给healpy之前,我们需要执行相同的操作。我们可以使用cmap.set_under('w')将颜色设置为白色。

这似乎是healpy中的一个错误,因为这会影响您尝试使用的大多数色彩映射。

from healpy import mollview,cartview
from pylab import arange, show, cm

cmap = cm.bwr
cmap.set_under('w')

m = arange(768)
mollview(m, cmap=cmap)
show()

enter image description here

要完全模仿healpy对其默认色彩图(它使用jet)的作用,我们需要设置overunderbad值。这是来自healpy github的relevant function

cmap=cm.bwr
cmap.set_over(cmap(1.0))
cmap.set_under('w')
cmap.set_bad('gray')

答案 1 :(得分:0)

您看到的不是意外的背景颜色。您使用的色彩图使得图中的最低值显示为蓝色。由于你周围的东西似乎是零的东西,这在图中显示为蓝色。尝试使用白色为零的colormap

答案 2 :(得分:0)

更新~/anaconda3/lib/python3.7/site-packages/healpy/projaxes.py

将所有newcm.set_bad("gray")替换为newcm.set_bad((1, 1, 1, 1))

在下面的示例中,我将其更新为newcm.set_bad((0, 0, 0, .9)),以突出显示其工作原理。

@tmdavison的答案不适用于定制的归一化功能。但是上面的编辑可以。

from healpy import mollview
from pylab import arange, show, cm, Normalize
m = arange(768)

mollview(m, cmap=cm.bwr, norm=Normalize(vmin=0, vmax=768))
show()

enter image description here