2017-05-01_092901.jpg

最近買了python 初學特訓班的書來看看

在Matplotlib這章節發現了些問題,就是按照書本的步驟還是無法顯示中文...

先來看看書本怎麼教的

 

說是因為本身字體不支援中文,所以我們要將他的字體改成中文字體

他說先在安裝目錄下的 Anaconda3\Lib\site-packages\matplotlib\mpl-data目錄,用記事本開啟matplotlibrc

接著搜尋到#font.serif,將前面的#移除

其實這邊font.serif後面的字串已經和書本的內容已經不同

2017-05-01_092655.jpg

 

接著在搜尋到#axes.unicode_minus,一樣把#移除,將True改為False

2017-05-01_092735.jpg

 

再來到C:\Windows\Fonts,把字體Microsoft JhengHei UI字體複製到 Anaconda3\Lib\site-packages\matplotlib\mpl-data\fonts\ttf下

並刪除Vera.tff,將msjh.ttc更名為Vera.tff

看到這已經出現一些問題了...我找不到Microsoft JhengHei UI...查了很久才知道是微軟正黑體

複製到了Anaconda3\Lib\site-packages\matplotlib\mpl-data\fonts\ttf底下,正要刪除Vera.tff發現根本沒這個檔案

那我直接把名字改成Vera.tff,重新執行就發現...沒有用

2017-05-01_092901.jpg

 

好~做到這邊已經半夜了,然後發現台灣討論這些東西的真的真的很少...找到的資料都大陸的

連書本寫的方法大陸論壇也有提到,可是都是2016年左右的資料

 

好啦~在昨天運氣好查到的資料如下:

 Anaconda3\Lib\site-packages\matplotlib\mpl-data目錄,用記事本開啟matplotlibrc

搜尋到font.family,將後面改為 Microsoft JhengHei,存檔 重新執行python軟體

2017-05-01_093817.jpg

 

終於不在是亂碼了Q~Q

 

2017-05-01_093042.jpg

 

另外這邊看到

微軟正黑體:Microsoft JhengHei

標楷體:DFKai-sb

可以使用

但是

新細明體:PMingLiU

細明體:MingLiU

或是其他字體要如何使用我就不太清楚了,我連上面的那些字體名稱哪裡來的都是上網查的,希望知道的網友們可以補充一下

 

 

那書本與實際操作不同的原因可能是這本書是去年2016年的 ,使用版本是Anaconda 3.5

但是官方已經更新到Anaconda 3.6了,而且好像沒有提供下載QQ

那既然版本有更新,我覺得應該要找新的方式,而不是去下載舊版延續使用(雖然搞死我了...)

 

感謝你的收看,希望有幫助到你們

創作者介紹
創作者 查理B 的頭像
查理B

查理B愛說說

查理B 發表在 痞客邦 留言(7) 人氣()


留言列表 (7)

發表留言
  • 訪客
  • 剛好在查編碼的問題,謝謝大大的幫忙
  • 加油~多看一些文章突然覺得自己還太菜了
    很開心能幫到你QQ

    查理B 於 2017/10/09 13:28 回覆

  • 感謝的路人甲
  • 花了很多時間,跟你走了一樣的路程(英文、大陸解法),最後在你這邊找到答案! 太感謝了 :)
  • 加油~python根本是個無止盡的深淵!

    查理B 於 2017/10/15 13:48 回覆

  • 訪客
  • 照這改結果還是不行QQ,會顯示
    C:\Anaconda\lib\site-packages\matplotlib\font_manager.py:1297: UserWarning: findfont: Font family ['Microsoft JhengHei UI'] not found. Falling back to DejaVu Sans
    (prop.get_family(), self.defaultFamily[fontext]))
    想請問將Microsoft JhengHei複製到Anaconda是不是會自動改檔名成msjh.ttc ?
  • Anaconda3\Lib\site-packages\matplotlib\mpl-data目錄,用記事本開啟matplotlibrc
    搜尋到font.family,將後面改為 Microsoft JhengHei,存檔 重新執行python軟體
    只要做這段就好了

    前面的部分是書裡的內容,版本不同已經無效了QQ

    查理B 於 2017/10/26 21:10 回覆

  • darker
  • C:\ProgramData\Anaconda3\lib\site-packages\matplotlib\font_manager.py:1316: UserWarning: findfont: Font family ['Microsoft JhengHei'] not found. Falling back to DejaVu Sans
    (prop.get_family(), self.defaultFamily[fontext]))

    我的問題與上位留言者相同。
    我的操作步驟如下:
    1.記事本開啟matplotlibrc搜尋到font.family,將後面改為 Microsoft JhengHei
    重新執行spider,結果不行。
    2.將Microsoft JhengHei UI copy到ttf資料夾
    重新執行spider,結果還是不行。

    使用版本:Anaconda 3.6
  • fixhd
  • 字型一定要先存到anaconda\Lib\site-packages\matplotlib\mpl-data\fonts\ttf
    這裡也要改
    font.serif : Microsoft JhengHei Serif,
    還有fond.family還有font.serif前面有#的話都要把#刪除喔
  • 你也是高手一枚!
    我很久沒碰了,其實有些地方都有些忘記了
    感謝提醒@@/

    查理B 於 2017/11/22 23:56 回覆

  • darker
  • 我綜合了您與書上的作法,整理如下,已經可正常顯示中文,且不會有上述的訊息。
    用記事本開啟matplotlibrc
    font.family : sans-serif
    font.serif : DejaVu Serif, Bitstream Vera Serif, ……
    axes.unicode_minus : False ………
    到C:\Windows\Fonts,把字體Microsoft JhengHei UI字體複製到……fonts\ttf下(會產生三個檔案,其中一個為msjh.ttc)
    刪除DejaVuSans.ttf
    將msjh.ttc改名為DejaVuSans.ttf
    重新開啟python

    我使用的是使用版本:Anaconda 3.6
    非常謝謝您的指導。
  • 你太厲害了
    我本身也是個新手,所以可能有哪些步驟忽略了
    有誤導的地方請多多包涵@@+

    查理B 於 2017/11/22 23:55 回覆

  • 路人甲
  • 指定matplotlib中文字型
    然後愈顯示中文如xlabel、ylabel、title 給定fontproperties中文字型
    如下例:
    使用simsun 字型

    import matplotlib
    chinese_font = matplotlib.font_manager.FontProperties(fname='C:\Windows\Fonts\simsun.ttc')
    matplotlib.pyplot.xlabel(" ",fontproperties=chinese_font)
    matplotlib.pyplot.ylabel(" ",fontproperties=chinese_font)
    matplotlib.pyplot.title(" ",fontproperties=chinese_font)