所以我尝试了几乎所有我能在stackoverflow上找到的东西(以及任何谷歌能引导我的地方);我就是改不了这该死的字体
以下是我迄今为止尝试过的非详尽列表:
按照this question中的建议尝试:
import matplotlib.pyplot as plt
csfont = {'fontname':'Times New Roman'}
x = [1,2,3]
y = x
plt.plot(x,y)
plt.title('Please be Times >__<',**csfont)
plt.show()
给了我这个错误日志:
>>> (executing file "<tmp 1>")
Note on using QApplication.exec_():
The GUI event loop is already running in the pyzo kernel, and exec_()
does not block. In most cases your app should run fine without the need
for modifications. For clarity, this is what the pyzo kernel does:
- Prevent deletion of objects in the local scope of functions leading to exec_()
- Prevent system exit right after the exec_() call
/home/antoine/miniconda3/lib/python3.6/site-packages/matplotlib/font_manager.py:1297: UserWarning: findfont: Font family ['Times New Roman'] not found. Falling back to DejaVu Sans
(prop.get_family(), self.defaultFamily[fontext]))
>>>
这个答案也没有帮到我:
import matplotlib.pyplot as plt
plt.rcParams["font.family"] = "Times New Roman"
x = [1,2,3]
y = x
plt.plot(x,y)
plt.title('Please be Times >__<',**csfont)
plt.show()
没有显示错误;但这不是时代杂志..
对我来说,第一次尝试给出错误日志也有点奇怪,因为这样做表明Times New Roman确实是我应该能够使用的字体:
>>> set([f.name for f in matplotlib.font_manager.fontManager.afmlist])
{'Courier', 'Times', 'URW Bookman L', 'Nimbus Mono L', 'ITC Bookman', 'ZapfDingbats', 'Century Schoolbook L', 'New Century Schoolbook', 'Helvetica', 'Standard Symbols L', 'Utopia', 'Palatino', 'URW Gothic L', 'Courier 10 Pitch', 'Symbol', 'Computer Modern', 'Bitstream Charter', 'ITC Avant Garde Gothic', 'Nimbus Roman No9 L', 'ITC Zapf Chancery', 'ITC Zapf Dingbats', 'URW Chancery L', 'Nimbus Sans L', 'Dingbats', 'URW Palladio L'}
所以...我还能做什么?
4条答案
按热度按时间6yoyoihd1#
为了查看哪些字体可用,您应该使用this method:
然后看看《时代新罗马人》是否在那里。
如果不是,你不能使用它。如果是,则以下内容将按预期工作。
请注意,您可以指定几种字体。将选择实际可用的第一个。在列表中最后添加
"serif"
至少可以确保在其他字体都不存在的情况下回退到serif字体。h6my8fg22#
我在Python 3上遇到了同样的问题。9、Anaconda on Pop!_OS 20.04 Linux。
所有专有的MS字体都是使用
sudo apt install ttf-mscorefonts-installer
安装的,但根本没有帮助。安装一个包含MS字体的CONDA包也没有帮助
matplotlib
!:(还有,我的
fontmanager
抱怨没有重建这样的东西!AttributeError: module 'matplotlib.font_manager' has no attribute '__rebuild'
解决方案:
我已经将MS字体从
/home/dracid/anaconda3/fonts
复制到Matplotlib的OWN字体文件夹中。在我的系统里是:/home/dracid/anaconda3/lib/python3.9/site-packages/matplotlib/mpl-data/fonts/ttf
在此之后,需要删除matplotlib字体
/home/dracid/.cache/matplotlib/fontlist-v330.json
,然后在下一次启动Python会话时,它将重建缓存。然后,VIOLA我的IEEE论文情节终于工作了:)现在我可以继续with my academic work on LINUX <3
js81xvg63#
同样的问题,同样的警告:
我读了很多Stack Overflow的帖子,直到我找到了this。
现在我可以在
matplotlib
中使用“Times New Roman”了。在我的例子中,我不得不使用
sudo
,因为我没有使用虚拟环境,所以我会这样做:另一件事,我会查找的是帖子的最后一个建议,我。例如,
注意:如果字体没有呈现,可能是因为matplotlib需要刷新它的字体缓存(参见Kevin的评论):
导入matplotlib
matplotlib.font_manager._rebuild()
对我没用。相反,我使用:
1zmg4dgp4#
我使用这段ipython代码来确保
Georgia
安装在virtualenv中。显然,matplotlib.font_manager
找到它是不够的。