首页 > 技术文章 > 在云服务器中使用matplotlib作图显示中文标题

angbors 2021-09-12 19:23 原文

1、在本地windows系统中,需要指定默认字体。

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt

plt.rcParams['font.sans-serif'] = ['SimHei'] 
plt.rcParams['font.family']='sans-serif'

plt.plot(x, y)
plt.title("爱你一万年", fontproperties=myfont) plt.show()

2、在云服务器中,由于一般为linux系统与本地windows系统字体并不相同,因此无法通过指定默认字体方式设定中文显示。

需要直接指定字体文件位置,指定字体。

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt

from matplotlib.font_manager import *
myfont = FontProperties(fname='/usr/share/fonts/ms-fonts/simhei.ttf')

plt.plot(x, y)
plt.title("爱你一万年", fontproperties=myfont) plt.show()

到此可以让matplotlib显示中文标签。

这一方法也同样适用于seaborn包

import numpy as np
import pandas as pd
import seaborn as sns

from matplotlib.font_manager import *
myfont = FontProperties(fname='/usr/share/fonts/ms-fonts/simhei.ttf')

sns.lineplot(x, y)
plt.title("爱你一万年", fontproperties=myfont) plt.show()

 

3、在云服务器中,指定默认字体。

第2种方式在使用中有非常多的限制,所以还是应该在云服务器中指定默认字体。

如果非要在云服务器中指定默认字体,需要修改两个位置:

(1)找到matplotlib缓存位置

sudo find / -name mpl-data

(其中xxx是个人文件夹,自行指定)

~/xxx/Anaconda3/lib/python3.8/site-packages/matplotlib/mpl-data/matplotlibrc

~/.local/lib/python3.8/site-packages/matplotlib/mpl-data/matplotlibrc

使用vim打开matplotlibrc修改下面几项:

font.family         : sans-serif
font.sans-serif     : SimHei, DejaVu Sans, Bitstream Vera Sans, Lucida Grande, Verdana, Geneva, Lucid, Arial, Helvetica, Avant Garde, sans-serif
axes.unicode_minus  : False   #解决负号’-'显示为方块的问题

将simhei.ttf字体粘贴到matplotlib配置文件夹下:

sudo cp /usr/share/fonts/xxx
~/xxx/Anaconda3/lib/python3.8/site-packages/matplotlib/mpl-data/fonts/ttf

~/.local/lib/python3.8/site-packages/matplotlib/mpl-data/fonts/ttf

最后需要删除缓存文件

cd .cache/matplotlib

sudo rm -rf xxx

运行matplotlib查看效果

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt

plt.rcParams['font.sans-serif'] = ['SimHei'] 
plt.rcParams['font.family']='sans-serif'

plt.plot(x, y)
plt.title("爱你一万年", fontproperties=myfont) plt.show()

推荐阅读