我正在尝试将matplotlib图的字体设置为Times New Roman。我尝试过:
import matplotlib.pyplot as plt
plt.rcParams['font.family'] = 'Times New Roman'
我相信这是设置字体的正确方法,但是我不断收到找不到找到的错误:
/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/matplotlib/font_manager.py:1238: UserWarning: findfont: Font family ['Times New Roman'] not found. Falling back to DejaVu Sans.
搜索后,我确认我已经下载了字体。我尝试打开python shell并自己检查rcParams的内容。在许多其他字体参数中,我奇怪地发现font.serif
中包含Times New Roman的字体列表。
'font.serif': ['DejaVu Serif', 'Bitstream Vera Serif', 'Computer Modern Roman', 'New Century Schoolbook', 'Century Schoolbook L', 'Utopia', 'ITC Bookman', 'Bookman', 'Nimbus Roman No9 L', 'Times New Roman', 'Times', 'Palatino', 'Charter', 'serif'],
但是,font.family
仅包含一项:sans-serif
,当matplotlib documentation states内font.family
中应有五个值时。有人遇到过这个错误吗?您是如何解决的?
答案 0 :(得分:0)
但是,font.family仅包含一项:sans-serif,当 matplotlib文档指出应该有五个值 内部font.family
否,font.family
应该包含这五个值之一,即您要使用的字体系列。
您必须确保将字体系列设置为 serif ,并且字体 Times New Roman 位于衬线字体列表的顶部。它是这样的:
plt.rcParams['font.family'] = 'serif'
plt.rcParams['font.serif'] = ['Times New Roman'] + plt.rcParams['font.serif']
从技术上讲,您无需附加列表的其余部分(最后一部分)。如果实际上没有Times New Roman,它只是为matplotlib提供了一个后备。
另请参阅example in the docs。