Mollview:使用 matplotlib 配色方案并更改背景颜色

5

我正在尝试在healpy.mollview上使用其他的颜色映射方案,我用以下代码成功了

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

但是我得到了一个意外的蓝色背景,而且没有办法将其设置为白色。

3个回答

7
healpy似乎对其默认的颜色映射进行了修改,以改变超出范围时的颜色显示。因此,在将cm.bwr提供给healpy之前,我们需要做同样的修改。我们可以使用cmap.set_under('w')将颜色设置为白色。

我认为这似乎是healpy中的一个bug,因为这会影响您尝试使用的大多数颜色映射。

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()

在此输入图片描述

为了完全模拟healpy对其默认颜色映射的操作(它使用jet),我们需要设置overunderbad值。这是来自healpy github的相关函数

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

0

你看到的不是意料之外的背景颜色。你使用的调色板使得图中最低值呈现为蓝色。由于你周围的圆形物体似乎是零,因此在图中呈现为蓝色。尝试使用一个调色板,使其在零点处呈现为白色。


投影周围的区域不为零。如果您将鼠标悬停在那里,就会显示一个空列表“[]”,其中通常会有值。您可以通过更改“set_under”值来修复此问题,而不是限制自己使用从白色开始的颜色映射。请参阅我的答案以获得示例。 - tmdavison

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


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