Windows下的matplotlib畫圖中文顯示設定

weixin_34007291發表於2017-10-19

電腦環境:Windows7-64bit,Anaconda3-4.2.0(對應python 3.5.2版本),IDE是Anaconda自帶的Spyder 3。

1、找到Windows系統自帶的字型庫目錄,預設在C:\Windows\Fonts目錄下。

7021902-d0d61ebf84aec422.png

2、選擇你自己喜歡的字型,然後“右鍵”→“屬性”,可以看到該字型的名字。

本教程以微軟雅黑字型為例,您也可以選擇其他字型,如果自帶的字型庫滿足不了您的需求,您可以網上下載其他字型,將字型解壓到C:\Windows\Fonts目錄即可。

7021902-7fa7f804b6fec017.png

3、在IDE工具中,匯入matplotlib庫,開始定義字型所在路徑。

  • 1 先不設定引數,可以看到中文字型顯示為方框(此處使用的是SVC三分類模型)。
7021902-88f37e22e96bfde9.png
7021902-e78ea969fe2b59b2.png
  • 2 設定引數之後,可以看到中文字型可以正常顯示了。(程式碼經過測試,可放心使用)

哪裡需要中文設定,保證該函式裡有fontproperties = my_font引數即可。比如x軸的標籤為:鳶尾花的花萼長度。那麼可以使用:

plt.xlabel('鳶尾花的花萼長度', fontproperties = my_font)
7021902-00ddc78506543045.png
7021902-1350a2bd3e3f875d.png
# coding:utf-8
import numpy as np
import matplotlib.pyplot as plt
from sklearn import svm, datasets

# 以下兩行是解決常見的其他問題
plt.rcParams['font.sans-serif'] = ['SimHei']                          # 指定預設字型
plt.rcParams['axes.unicode_minus'] = False                            # 解決儲存影象是負號'-'顯示為方塊的問題

import matplotlib.font_manager as mf                                  # 匯入字型管理器
my_font= mf.FontProperties(fname='C:\\Windows\\Fonts\\msyh.ttf')      # 載入字型

iris = datasets.load_iris()
X = iris.data[:, :2]  
Y = iris.target

def my_kernel(X, Y):
    M = np.array([[2, 0], [0, 1.0]])
    return np.dot(np.dot(X, M), Y.T)

h = 0.02  

clf = svm.SVC(kernel = my_kernel)
clf.fit(X, Y)

x_min, x_max = X[:, 0].min() - 1, X[:, 0].max() + 1
y_min, y_max = X[:, 1].min() - 1, X[:, 1].max() + 1
xx, yy = np.meshgrid(np.arange(x_min, x_max, h), np.arange(y_min, y_max, h))
Z = clf.predict(np.c_[xx.ravel(), yy.ravel()])

Z = Z.reshape(xx.shape)
plt.pcolormesh(xx, yy, Z, cmap=plt.cm.Paired)

plt.scatter(X[:, 0], X[:, 1], c=Y, cmap=plt.cm.Paired)
plt.title('測試!!!3-Class classification using SVM with custom kernel',
          fontproperties = my_font)
plt.axis('tight')
plt.show()
7021902-f246a1481b9d280b.png
7021902-952d0b1b866b673b.png

相關文章