【问题标题】:mollview: use matplotlib colormaps and change background colormollview:使用 matplotlib 颜色图并更改背景颜色
【发布时间】:2016-03-05 14:01:01
【问题描述】:

我正在尝试在healpy.mollview 上使用其他颜色图 我成功使用了这段代码

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

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

【问题讨论】:

    标签: matplotlib healpy


    【解决方案1】:

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

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

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

    【讨论】:

      【解决方案2】:

      您看到的不是意外的背景颜色。您使用的颜色图使图中的最小值显示为蓝色。由于您周围的圆形事物似乎为零,因此在图中显示为蓝色。尝试使用白色为零的colormap

      【讨论】:

      • 投影周围的区域不为零。如果您将鼠标悬停,则只会显示一个空列表[],该值通常位于该列表中。您可以通过更改 set_under 值来解决此问题,而不是将自己限制在从白色开始的颜色图上。例如,请参阅我的答案。
      【解决方案3】:

      更新~/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()
      

      【讨论】:

        猜你喜欢
        • 2015-01-07
        • 2021-09-30
        • 1970-01-01
        • 2012-07-10
        • 2014-10-04
        • 2019-06-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多