我正在使用healpy的mollview()
函数(http://healpy.github.com/healpy/generated/healpy.visufunc.mollview.html)来绘制地图。我可以为颜色栏指定标题和标签,但我看不出如何更改字体大小。很抱歉,如果这不是发布此问题的正确位置...我找不到任何地方在healpy的项目页面上询问它。我也不能将这个问题标记为“healpy”,因为我没有足够的声誉,也没有人曾经问过关于healpy的问题。
答案 0 :(得分:3)
(我无法评论Warpig的评论,因为我的声誉很低)
截至 2021 年 7 月,我在使用 IndexError: list index out of range
和 HpxAx = 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()
之前进行。
答案 1 :(得分:1)
您可以更改地图更新rcParams
中的所有文字的字体大小:
import matplotlib
matplotlib.rcParams.update({'font.size': 22})
答案 2 :(得分:1)
另一个迟到的回应:
不幸的是,rcParams
对units
问题不起作用,因为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()
如您所见,对应于单位和坐标系的文本对象不会受到影响,因为它们只有一个单独的文本处理系统。可以使用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()