一区二区三区日韩精品-日韩经典一区二区三区-五月激情综合丁香婷婷-欧美精品中文字幕专区

分享

相信我,這篇文章一定能讓你的matplotlib完美顯示中文!

 鷹擊彩霞 2021-02-25

大家好,我是早起。

在使用matplotlib進行可視化時,一個令人頭疼的問題就是如何正確的顯示中文,有時你百度后各種嘗試,可能遇到中文還是顯示一堆無效的框框,那么本文就將提供三種解決辦法,希望能夠幫助到大家。

首先我們需要知道,為什么中文不能被正確顯示?比如你使用plt.title('可視化圖鑒')添加中文標題,matplotlib在輸出文字時就去當前的字體文件中去查找這幾個字,但是很遺憾沒有找到。

所以本質上就是matplotlib的中文字體文件沒有被正確設置。在下面給出的三個解決辦法中,我不能確保一定能對你的電腦生效(畢竟有些時候因為環(huán)境導致的差異確實很麻煩),但是只要你清晰了解決思路(讓matplotlib正確找到中文字體文件),一定能搞定!

一、麻煩但一定能解決的辦法

首先給出的是一個99%概率能讓你正確顯示中文的方法,但不是一勞永逸的辦法,所以略顯麻煩。

上面我們說了,之所以不能輸出中文,就是因為matplotlib找不到中文字體文件,怎么辦?我們就強制指定一個中文字體文件,按住matplotlib的頭,讓他遇到中文就讀取這個字體。

比如我們先下載一個想要的中文字體文件,比如微軟雅黑吧,下載到本地并復制它的絕對路徑,然后使用font_manager.FontProperties讀取這個字體,定義為WRYH

import matplotlib as mpl

WRYH = mpl.font_manager.FontProperties(fname = '/Users/liuhuanshuo/Desktop/可視化圖鑒/font/WeiRuanYaHei-1.ttf'#微軟雅黑字體

之后在需要輸出中文的地方,添加fontproperties = WRYH即可使用我們剛剛讀取的中文字體,比如設置中文標題

plt.title('可視化圖鑒',fontproperties = WRYH)

中文正確出來了有沒有!理論上這個辦法無視環(huán)境,不論Mac還是Win下,只要你的中文字體文件路徑沒有問題,一定能把中文顯示出來。

但是正如標題所說的:麻煩,只要需要輸出中文,你就要加上fontproperties = WRYH這么一句話,如果要設置標題、圖例、坐標軸、注釋等多個中文的話,那么每制作一張圖就需要復制粘貼很多次,工作量就上去了。

所以這個方法適用于緊急使用或者在非常用電腦下,沒空折騰其他方法時使用。

二、可能是簡單好用的辦法

第二個辦法是相對簡單一點(不用安裝任何字體,也不用修改路徑),但是在有些電腦上可能會失效(小概率)。

其實matplotlib也內置了很多字體,我們可以使用下面的代碼查看

import matplotlib as mpl
mpl.font_manager.FontManager().ttflist

我們可以看到原來內置了這么多字體文件,所以只需要找到其中的中文字體并指定就行了,當然從幾百個字體名中找到中文字體是比較繁瑣的

我自己測試下面三個都是OK的

'Songti SC'
'Wawati TC'
'STHeiti'

所以只需要使用plt.rcParams指定字體就行,比如使用宋體'Songti SC'

plt.rcParams['font.sans-serif'] = ['Songti SC']

可以看到,中文也成功輸出了。

為什么說這個辦法不一定有效,因為不知道是由于版本原因還是電腦的原因,在有些電腦上我沒法正常使用這個辦法。

但這個方法值得一試,因為太簡單了。所以你可以直接使用plt.rcParams['font.sans-serif'] = ['Songti SC']之后看一下中文是否能正確輸出,如果可以的話就說明有效,以后只需要在開頭加上這么一句話就行。

至于plt.rcParams是什么,我會在后續(xù)文章中單獨進行講解!

折騰但一勞永逸的辦法

這是一個需要折騰一會,也是大多數教程推薦的方法,但是由于環(huán)境的問題,可能有些機器折騰很久才能成功。

回想上面第一種方法是強制指定matplotlib讀取本地字體文件,第二種方法是嘗試從默認字體文件中讀取中文字體,那么將本地字體文件添加到默認字體中就是第三種辦法!

這里我以mac系統(tǒng)下,在Jupyter Notebook中設置為例進行講解,Windows可以參考操作。

首先我們打開Jupyter Notebook,執(zhí)行下面的代碼

import matplotlib    
print(matplotlib.matplotlib_fname())

這一步就是找到你的matplotlib配置文件所在位置,如果你同時安裝了anaconda又單獨裝了個Python或者是你有多個版本matplotlib(可能你都不知道為什么),就會導致你用別人教程中的路徑修改后會報錯。

所以我們必須找到當前notebook,使用的matplotlib配置文件在哪里

解析來進入打印出來的目錄,我們需要關注的就是一個字體文件,下載你要的字體比如黑體(simhei.ttf),放入ttf文件夾中,之后找到matplotlibrc文件,

    本站是提供個人知識管理的網絡存儲空間,所有內容均由用戶發(fā)布,不代表本站觀點。請注意甄別內容中的聯系方式、誘導購買等信息,謹防詐騙。如發(fā)現有害或侵權內容,請點擊一鍵舉報。
    轉藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多

    初尝人妻少妇中文字幕在线| 国产免费观看一区二区| 日本不卡在线视频中文国产| 熟女少妇久久一区二区三区| 国产又色又爽又黄的精品视频 | 亚洲精品小视频在线观看| 欧美日韩有码一二三区| 中字幕一区二区三区久久蜜桃 | 欧美一区日韩二区亚洲三区| 国产专区亚洲专区久久| 久久精品一区二区少妇| 国产日产欧美精品大秀| 中文字字幕在线中文乱码二区 | 欧美人妻少妇精品久久性色| 大香蕉久草网一区二区三区| 99热在线精品视频观看| 日韩女优视频国产一区| 久久一区内射污污内射亚洲| 欧美国产日本高清在线| 黄色激情视频中文字幕| 欧美自拍系列精品在线| 五月激情综合在线视频| 91人妻人澡人人爽人人精品| 成年人视频日本大香蕉久久| 久热久热精品视频在线观看| 亚洲综合一区二区三区在线| 黄色片一区二区在线观看| 91偷拍与自偷拍精品| 精品少妇人妻av一区二区蜜桃| 亚洲av日韩av高潮无打码| 日韩成人免费性生活视频| 国产午夜免费在线视频| 丝袜诱惑一区二区三区| 黄色av尤物白丝在线播放网址| 深夜视频成人在线观看| 美国欧洲日本韩国二本道| 91国自产精品中文字幕亚洲| 精品人妻一区二区三区四在线| 好吊日在线视频免费观看| 日本高清不卡一二三区| 午夜精品在线观看视频午夜|