Matplotlib是一個Python 2D繪圖庫,它可以在各種平臺上以各種硬拷貝格式和交互式環境生成出具有出版品質的圖形。 Matplotlib可用于Python腳本,Python和IPython shell,Jupyter筆記本,Web應用程序服務器和四個圖形用戶界面工具包。
然而最近在使用matplotlib默認情況會出現亂碼問題,原則上matplotlib是支持中文的,只是在配置信息里沒有中文字體的相關信息。文章源自四五設計網-http://www.wasochina.com/42034.html
解決方法如下:文章源自四五設計網-http://www.wasochina.com/42034.html
解決方案一:修改配置文件文章源自四五設計網-http://www.wasochina.com/42034.html
matplotlib 從配置文件 matplotlibrc 中讀取配置,字體相關內容也在其中。查詢當前matplotlibrc 所在目錄,可以用 get_configdir()函數:文章源自四五設計網-http://www.wasochina.com/42034.html
1 2 | import matplotlib matplotlib.get_configdir() |
通常存放位置:lib\site-packages\matplotlib\mpl-data\matplotlibrc文章源自四五設計網-http://www.wasochina.com/42034.html
涉及到字體部分的設置內容為:文章源自四五設計網-http://www.wasochina.com/42034.html
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | #font.family : sans-serif #font.style : normal #font.variant : normal #font.weight : normal #font.stretch : normal ## note that font.size controls default text sizes. To configure ## special text sizes tick labels, axes, labels, title, etc, see the rc ## settings for axes and ticks. Special text sizes can be defined ## relative to font.size, using the following values: xx-small, x-small, ## small, medium, large, x-large, xx-large, larger, or smaller #font.size : 10.0 #font.serif : DejaVu Serif, Bitstream Vera Serif, Computer Modern Roman, New Century Schoolbook, Century Schoolbook L, Utopia, ITC Bookman, Bookman, Nimbus Roman No9 L, Times New Roman, Times, Palatino, Charter, serif #font.sans-serif : DejaVu Sans, Bitstream Vera Sans, Computer Modern Sans Serif, Lucida Grande, Verdana, Geneva, Lucid, Arial, Helvetica, Avant Garde, sans-serif #font.cursive : Apple Chancery, Textile, Zapf Chancery, Sand, Script MT, Felipa, cursive #font.fantasy : Comic Sans MS, Chicago, Charcoal, ImpactWestern, Humor Sans, xkcd, fantasy #font.monospace : DejaVu Sans Mono, Bitstream Vera Sans Mono, Computer Modern Typewriter, Andale Mono, Nimbus Mono L, Courier New, Courier, Fixed, Terminal, monospace |
matplotlib 默認使用的 font.family 是 sans-serif,即無襯線字體,可以看到在font.sans-serif中設置的全部為西文字體,這里的設置和css樣式文件中設置差不多,只需要添加系統存在的字體名稱即可(需要注意的是,matplotlib:文章源自四五設計網-http://www.wasochina.com/42034.html
只支持ttf格式的字體),設置時需要將注釋符號#去除。文章源自四五設計網-http://www.wasochina.com/42034.html
解決方案二:重載配置文件文章源自四五設計網-http://www.wasochina.com/42034.html
1 2 3 4 | import matplotlib as mpl mpl.rcParams[ 'font.sans-serif' ] = [ 'SimHei' ] mpl.rcParams[ 'font.serif' ] = [ 'SimHei' ] mpl.rcParams[ 'axes.unicode_minus' ] = False # 解決保存圖像是負號'-'顯示為方塊的問題,或者轉換負號為字符串 |
解決方案三:自定義字體
文章源自四五設計網-http://www.wasochina.com/42034.html
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | import numpy as np import pylab as pl import matplotlib.font_manager as fm myfont = fm.FontProperties(fname = r 'D:\Fonts\simkai.ttf' ) # 設置字體 t = np.arange( 0.0 , 2.0 * np.pi, 0.01 ) # 自變量取值范圍 s = np.sin(t) # 計算正弦函數值 z = np.cos(t) # 計算余弦函數值 pl.plot(t,s,label = '正弦' ) pl.plot(t,z,label = '余弦' ) pl.xlabel( 'x-變量' ,fontproperties = myfont,fontsize = 24 ) #設置標簽 pl.ylabel( 'y-正弦余弦函數值' ,fontproperties = myfont,fontsize = 24 ) pl.title( 'sin-cos函數圖像' ,fontproperties = myfont,fontsize = 32 ) #圖像標題 pl.legend(prop = myfont) pl.show() |
總結
以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,


評論