关于Matplotlib和非ascii字符的永不停止的故事仍在继续:
1)Localhost:Mac OS X:默认情况下,缺少某些字符(替换为[])。好的,添加matplotlib.rc('font', family='Verdana')
字符后显示正常。但是,当部署到生产服务器时,事情会再次被破坏。
2)服务器:Linux(openSUSE,使用:matplotlib.use('Agg')
,提供png和pdf,Django应用程序):调用matplotlib.rc('font', family='Verdana')
现在没有帮助(为什么?)。我甚至将一些核心字体从Mac复制到openSUSE以确保它们是相同的。
这有什么帮助:
import matplotlib.font_manager as fm
fp = fm.FontProperties(fname="/usr/share/fonts/truetype/Verdana.ttf")
# matplotlib.rcParams['font.family'] = fp.get_name()
matplotlib.rc('font', family=fp.get_name())
然后对每个绘图/块使用每个partes plt.title(_title, fontproperties=fp)
。这非常累人......更糟糕的是,在使用传说时它无法使用。例如,没有办法(有吗?)这样使用它:
ax.legend([charts], [_label], fontproperties=fp)
和
ax.legend([charts], [_label], prop={'family': 'Verdana'}
没有任何效果(但它适用于Mac OS X)。
有趣的是,大多数非ascii字符都显示得很好(ščřž...),问题只出现在ě,ť,ď......为什么Matplotlib仍然存在unicode的这些问题?我不介意在90年代,但它是2015年,不能正确使用变音符号是痛苦。
为什么“挂钩”在OS X下工作,但在openSUSE服务器中没有任何影响?
答案 0 :(得分:1)
matplotlib找不到正确的字体可能是由陈旧的字体缓存造成的(这是我们需要更好地解决的问题)。
要查找您的缓存是否已
import matplotlib.font_manager as fm
print(fm.cachedir) # or other way of getting the text out
然后删除该目录中与字体相关的内容。它们将在您下次导入matplotlib时重建,并且(应该)现在包含更新的字体。