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()