Matplotlib是Python的一个很好的绘图包,但是其本身并不支持中文(貌似其默认配置中没有中文字体),所以如果绘图中出现了中文,就会出现乱码。
如:
1 2 3 4 5 6 7 8 9 | import numpy as np import matplotlib.pyplot as plt c=np.random.randn(100)*100 plt.plot(c) plt.ylabel('数值') plt.xlabel('序列') plt.title('例子') plt.show() |
出现乱码
解决乱码
window 系统添加下面三行可以解决
1 2 3 | from pylab import * mpl.rcParams['font.sans-serif'] = ['SimHei'] mpl.rcParams['axes.unicode_minus'] = False |
例子
1 2 3 4 5 6 7 8 9 10 11 | import numpy as np import matplotlib.pyplot as plt from pylab import * mpl.rcParams['font.sans-serif'] = ['SimHei'] mpl.rcParams['axes.unicode_minus'] = False c=np.random.randn(100)*100 plt.plot(c) plt.ylabel('数值') plt.xlabel('序列') plt.title('例子') plt.show() |
也可以添加其他字体:
在控制面板 找到字体
如我们选择华文仿宋:
查看其属性
复制对象名称:路径
代码改为
1 2 3 4 5 6 7 8 9 10 11 12 | import numpy as np import matplotlib.pyplot as plt from pylab import * mpl.rcParams['font.sans-serif'] = ['SimHei'] mpl.rcParams['axes.unicode_minus'] = False zhfont1 = matplotlib.font_manager.FontProperties(fname='C:\Windows\Fonts\STFANGSO.TTF') c=np.random.randn(100)*100 plt.plot(c) plt.ylabel('数值',fontproperties=zhfont1) plt.xlabel('序列',fontproperties=zhfont1) plt.title('例子',fontproperties=zhfont1) plt.show() |
注意:
有些字体,只是显示在上面啦,好像没有安装,导入程序画图会失败(,本机无该字体)