Hoj*_*Cho 3 python fonts matplotlib
我在 Windows 10 上使用 python2.7 和 Anaconda,并且在配置字体时遇到一些问题。
首先,我知道如果我安装所需的字体,这个问题很快就能解决。但我想知道是否可以在不安装任何新字体的情况下解决这个问题。
我有这个简单的绘图代码。
import matplotlib as mpl
mpl.rcParams['font.family']='serif'
mpl.rcParams['mathtext.fontset']='cm'
import matplotlib.pyplot as plt
plt.plot([1,2,3],[4,3,4])
plt.text(1.5,4,'Hello!')
plt.show()
Run Code Online (Sandbox Code Playgroud)
它工作完美。由于我的计算机上没有安装 Computer Modern 字体(考虑到我安装了 TeXLive,这很奇怪,但这无关紧要。),因此matplotlib必须在内部安装它。现在,我希望我的衬线字体也能成为计算机现代字体。我以为添加
mpl.rcParams['font.serif']=['cm']
Run Code Online (Sandbox Code Playgroud)
行与行之间mpl.rcParams[]会起作用。相反,它给出了这个警告
C:\ProgramData\Anaconda2\lib\site-packages\matplotlib\font_manager.py:1297: UserWarning: findfont: Font family [u'serif'] not found. Falling back to DejaVu Sans
(prop.get_family(), self.defaultFamily[fontext]))
Run Code Online (Sandbox Code Playgroud)
这很令人困惑。我的计算机上没有安装计算机现代字体,但由于设置mathtext.fontset工作cm正常,我认为应该有某种方法来为font.serif.
对此有什么解决方案吗?
与 mpl 使用的内部 Computer Modern 字体相对应的正确 ttf 文件存储在数据路径中的某个位置。以下代码应该可以完成这项工作:
import matplotlib as mpl
import matplotlib.font_manager as font_manager
mpl.rcParams['font.family']='serif'
cmfont = font_manager.FontProperties(fname=mpl.get_data_path() + '/fonts/ttf/cmr10.ttf')
mpl.rcParams['font.serif']=cmfont.get_name()
mpl.rcParams['mathtext.fontset']='cm'
mpl.rcParams['axes.unicode_minus']=False
import matplotlib.pyplot as plt
plt.plot([-1,2,3],[4,3,4])
plt.text(1.5,4,'Hello!')
plt.show()
Run Code Online (Sandbox Code Playgroud)
线路
mpl.rcParams['axes.unicode_minus']=False
Run Code Online (Sandbox Code Playgroud)
需要解决一些与减号相关的问题。
| 归档时间: |
|
| 查看次数: |
3116 次 |
| 最近记录: |