在healpy.mollview()中更改colorbar标签的字体大小

时间:2012-08-13 19:27:44

标签: python matplotlib healpy

我正在使用healpy的mollview()函数(http://healpy.github.com/healpy/generated/healpy.visufunc.mollview.html)来绘制地图。我可以为颜色栏指定标题和标签,但我看不出如何更改字体大小。很抱歉,如果这不是发布此问题的正确位置...我找不到任何地方在healpy的项目页面上询问它。我也不能将这个问题标记为“healpy”,因为我没有足够的声誉,也没有人曾经问过关于healpy的问题。

3 个答案:

答案 0 :(得分:3)

(我无法评论Warpig的评论,因为我的声誉很低)

截至 2021 年 7 月,我在使用 IndexError: list index out of rangeHpxAx = f[1] 调用 healphy=1.11.0 时也得到 matplotlib==3.0.0。我的解决方法是先创建图形,然后更新它:

import numpy as np
import matplotlib.pyplot as plt
from matplotlib import cm
import healpy as hp

matplotlib.rcParams.update({'font.size': 18}) # fontsize for colorbar's values
fontsize = 22
cm.magma.set_under("w") # set background to white

# create figure
d = np.arange(12*16**2)
hp.mollview(d, title='Hello', unit=r'T', notext=False, coord=['G','C'], cmap=cm.magma)

f = plt.gcf() # accessing the current figure...
CbAx = f.get_children()[2] # ... then the colorbar's elements
coord_text_obj = CbAx.get_children()[1] # [1] corresponds to the particular label of the
                                        # colorbar, i.e. "Field value" in this case
coord_text_obj.set_fontsize(fontsize)
plt.show()

请注意,在这种情况下,我只对将颜色条的标签字体大小增加到 22,将颜色条的极端增加到 18 感兴趣; “赤道”标签不受影响。如果要保存图形,请记住在 plt.show() 之前进行。

Image link due to low reputation

答案 1 :(得分:1)

抱歉,回答迟到,但如果有人从谷歌发现这个问题很有用:

您可以更改地图更新rcParams中的所有文字的字体大小:

import matplotlib
matplotlib.rcParams.update({'font.size': 22})

答案 2 :(得分:1)

另一个迟到的回应:

不幸的是,rcParamsunits问题不起作用,因为text函数中的hp.visufunc.mollview对象是

import healpy as hp
import numpy as np
import matplotlib

fontsize = 20

d = np.arange(12*16**2)
hp.mollview(d, title='Hello', unit=r'T', notext=False, coord=['G','C'])

matplotlib.rcParams.update({'font.size':fontsize})
matplotlib.pyplot.show()

incomplete

如您所见,对应于单位和坐标系的文本对象不会受到影响,因为它们只有一个单独的文本处理系统。可以使用gcf()函数更改对象,即

import healpy as hp
import numpy as np
import matplotlib

fontsize = 20

d = np.arange(12*16**2)
hp.mollview(d, title='Hello', unit=r'T', notext=False, coord=['G','C'])

matplotlib.rcParams.update({'font.size':fontsize})
matplotlib.pyplot.show()

f = matplotlib.pyplot.gcf().get_children()
HpxAx = f[1]
CbAx = f[2]

coord_text_obj = HpxAx.get_children()[0]
coord_text_obj.set_fontsize(fontsize)

unit_text_obj = CbAx.get_children()[1]
unit_text_obj.set_fontsize(fontsize)

matplotlib.pyplot.show()

complete