當我們用matplotlib畫圖時會發現一個問題,那就是當我們想要在圖中顯示中文時會變成亂碼,像是下面的例子
import matplotlib.pyplot as plt
sales = [100,80,50]
x_labels = ['A品牌','B品牌','C品牌']
plt.bar(x_labels,sales)
plt.show()
會發生這種情況的原因在於matplotlib沒有原生支援中文字型,因此我們要手動幫matplotlib安裝中文字型
步驟一:下載中文字型
我們這邊先下載一個開源的中文字型,這邊我們採用的是一個開源可商用的中文字型-台北黑體,當然,讀者也可以使用自己想使用的中文字型
這時候,我選擇下載TaipeiSansTCBeta-Regular這個ttf檔案,下一步就是把它放到matplotlib讀取字型的資料夾裡面
步驟二:放入matplotlib內
要知道現在在使用matplotlib所在的資料夾可以在python環境下運行__file__指令,範例如下
import matplotlib
print(matplotlib.__file__)
這邊會顯示到matplotlib/__init__.py檔案的路徑,我們需要到matplotlib資料夾下面,然後找到mpl-data\fonts\ttf這條路徑,並在ttf資料夾丟入我們下載好的字體
步驟三: 到\.matplotlib 刪除所有快取檔案
matplotlib會在第一次import時建立字型列表,所以我們要到 C:\Users\你電腦的名字\.matplotlib 去刪除快取檔案(fontList.json)並重新import matplotlib
步驟四: 檢查字型是否成功安裝
可用以下指令來查看目前的字型
import matplotlib.font_manager
a = sorted([f.name for f in matplotlib.font_manager.fontManager.ttflist])
for i in a:
print(i)
這時候我們看到Taipei Sans TC Beta被成功安裝了
使用說明:畫圖前指定字型
要使用中文字型,我們要加入一行指令來告訴matplotlib設定中文字型,指令如下
plt.rcParams['font.sans-serif'] = ['Taipei Sans TC Beta']
後面填入的字型為剛剛查找字型所顯示的名子,這時候並可以成功顯示中文字體,
程式碼如下:
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif'] = ['Taipei Sans TC Beta']
sales = [100,80,50]
x_labels = ['A品牌','B品牌','C品牌']
plt.bar(x_labels,sales)
plt.show()
全照做了,但無法新增自型,步驟四產不出來
現在中文可以了嗎?
我也是