我有一个函数可以将指数从1e + N更改为1x10 ^ N,其中N将是unicode上标N:
# -*- coding: utf-8 -*
try:
unicode
except:
unicode = str
_superscripts = u'⁻⁰ⁱ²³⁴⁵⁶⁷⁸⁹'
_superscript_map = dict(zip(map(ord, u'-0123456789'), _superscripts))
def to_fancy(number, fmt='e'):
as_str = ('{:' + fmt + '}').format(number)
as_str, _, exponent = as_str.partition('e')
if exponent:
exponent = unicode(int(exponent.replace('+', '')))
exponent = exponent.translate(_superscript_map)
as_str += u'×10' + exponent
return as_str
如果我然后使用此值绘制带有标题的图表,即:
plt.figure(1)
plt.title(to_fancy(1e+18))
xwindow上的输出看起来很好(这是使用MacOSx后端)。
但是当我以正常方式将图形保存为.png文件时,它会将unicode渲染为空框:
答案 0 :(得分:0)
由于上面提供的提示,管理找到修复程序。对此进行排序的最简单方法是使用TeX unicode格式。我之前尝试过这个,但由于路径问题,我的TeXShop发行版决定不应该安装到通常的位置,因此无效。
确保路径中包含以下内容:
然后设置以下参数:
rcParams['text.usetex']=True
rcParams['text.latex.unicode']=True
这很慢,并不理想,因为字体太可怕了。但它至少可以防止出现在输出中的方框。