1. 程式人生 > >Python畫圖顯示方塊或亂碼的問題一次性永久解決

Python畫圖顯示方塊或亂碼的問題一次性永久解決

       當我們滿心歡喜的拿到一個數據集準備處理時,卻發現特徵都是中文的,頓時心中就打起了鼓來,不敢確定在處理資料,或者資料視覺化時會出什麼么蛾子。但是沒辦法只能硬著頭皮上啊。

那麼接下來李小寬頻你來解決這個令人問題:

問題:

看吧,明明很不容易從幾百個特徵中挑出幾個來想看看皮爾遜相關度矩陣,結果成了這樣,全是方塊。

(加# -*- coding: utf-8 -*-也不管用sa)

解決:

步驟一:開啟ipython什麼的(只要能執行Python程式碼就好啦)

import matplotlib
matplotlib.matplotlib_fname()

會顯示matplotlibrc檔案的地址:  'c:\\users\\dell\\appdata\\local\\programs\\python\\python37\\lib\\site-packages\\matplotlib\\mpl-data\\matplotlibrc'(這是我噠)

步驟二:修改matplotlibrc檔案 將檔案中的

#font.family: sans-serif

在註釋的下一行,新增一行:

#font.family: Microsoft YaHei

就可顯示為中文

下面我再來試驗下:

# 特徵間相關性分析
# 挑選一些主要的特徵,生成特徵之間的關聯圖,檢視特徵與特徵之間的相關性:
#指定預設字型
matplotlib.rcParams['font.sans-serif'] = ['SimHei']
matplotlib.rcParams['font.family']='sans-serif'
#解決負號'-'顯示為方塊的問題
matplotlib.rcParams['axes.unicode_minus'] = False

Correlation = pd.DataFrame(ip[
    [u'身高', u'體重',u'也不知道是啥',u'是否正常.2',u'是否正常.3',
    u'升高.1', u'降低', u'是否正常.4', u'升高.2', u'降低.1',
    u'是否正常.5',  u'是否正常.6', u'是否正常.7',u'尿pro',u'是否正常.8', 
    u'是否正常.9', u'是否正常.10',u'西醫診斷/支氣管肺炎']])

colormap = plt.cm.viridis
plt.figure(figsize=(14,12))
plt.title('Pearson Correlation of Features', y=1.05, size=15)
# sns.heatmap(Correlation.astype(float).corr(),linewidths=0.1,vmax=1.0, square=True, cmap=colormap, linecolor='white', annot=True)
# plt.show()
sns.heatmap(Correlation.astype(float).corr(),linewidths=0.1,vmax=1.0, square=True, cmap="YlGnBu", linecolor='white', annot=True)
plt.show()

從此以後大家就可以安心處理資料,視覺化啦。