公司建設(shè)個(gè)網(wǎng)站長沙seo優(yōu)化推廣公司
Python函數(shù)繪圖與高等代數(shù)互融實(shí)例(一):正弦函數(shù)與余弦函數(shù)
Python函數(shù)繪圖與高等代數(shù)互融實(shí)例(二):閃點(diǎn)函數(shù)
Python函數(shù)繪圖與高等代數(shù)互融實(shí)例(三):設(shè)置X|Y軸|網(wǎng)格線
Python函數(shù)繪圖與高等代數(shù)互融實(shí)例(四):設(shè)置X|Y軸參考線|參考區(qū)域
Python函數(shù)繪圖與高等代數(shù)互融實(shí)例(五): 則線圖綜合案例?
一: 正弦函數(shù)plot()繪圖實(shí)例,中文字體顯示問題?
在用matplotlib進(jìn)行繪圖時(shí),如果在繪制過程中會用到中文,則默認(rèn)情況下會出現(xiàn)字體警告,中文字符顯示為方框或亂碼的形式
D:\program_file_worker\python_source_work\SSO\pic\chapter01.py:27: UserWarning: Glyph 26412 (\N{CJK UNIFIED IDEOGRAPH-672C}) missing from current font.?
我們可以看到在警告信息中提示“missing from current font”,直譯就是“在當(dāng)前字體中缺少(中文字符)”,大概含義就是默認(rèn)的字體中不含中文字符。
對于這類問題,核心就是設(shè)置繪制圖片時(shí)的字體參數(shù)包含全部的需要用到的字符。
# 正弦函數(shù)import matplotlib.pyplot as plt import numpy as npfrom pylab import mpl'''使用matplotlib模塊繪制圖Figure 是一個(gè)畫布linspace(0.5, 3.5, 100)函數(shù)是在0.5~3.5之間均勻地取100個(gè)數(shù)randn(100)表示在標(biāo)準(zhǔn)的正太分布中隨機(jī)地取100個(gè)數(shù)''' # 設(shè)置中文顯示字體 mpl.rcParams["font.sans-serif"] = ["SimHei"]# 設(shè)置正常顯示符號 mpl.rcParams["axes.unicode_minus"] = Falsex = np.linspace(0.05, 20, 1000)y = np.sin(x)y1 = np.random.randn(1000)plt.scatter(x, y, label="正弦函數(shù)繪制實(shí)例")plt.legend() plt.show()
二: 運(yùn)行結(jié)果:
D:\program_file_worker\anaconda\python.exe D:\program_file_worker\python_source_work\SSO\pic\chapter01.py?
D:\program_file_worker\python_source_work\SSO\pic\chapter01.py:27: UserWarning: Glyph 26631 (\N{CJK UNIFIED IDEOGRAPH-6807}) missing from current font.
? plt.show()
D:\program_file_worker\python_source_work\SSO\pic\chapter01.py:27: UserWarning: Glyph 35760 (\N{CJK UNIFIED IDEOGRAPH-8BB0}) missing from current font.
? plt.show()
D:\program_file_worker\python_source_work\SSO\pic\chapter01.py:27: UserWarning: Glyph 22270 (\N{CJK UNIFIED IDEOGRAPH-56FE}) missing from current font.
? plt.show()
?
三: 解決方案?
添加下面兩行代碼:
Python腳本中動態(tài)設(shè)置matplotlibrc,這樣也可以避免由于更改配置文件而造成的麻煩,具體代碼如下:
# 設(shè)置中文顯示字體
mpl.rcParams["font.sans-serif"] = ["SimHei"]有時(shí)候,字體更改后,會導(dǎo)致坐標(biāo)軸中的部分字符無法正常顯示,此時(shí)需要更改axes.unicode_minus參數(shù):# 設(shè)置正常顯示符號
mpl.rcParams["axes.unicode_minus"] = False
注意:?
rcParams修改 font.sans-serif 或 font.family 對應(yīng)字體
# 以下代碼從全局設(shè)置字體為SimHei(黑體),解決顯示中文問題【W(wǎng)indows】
# 設(shè)置font.sans-serif 或 font.family 均可
plt.rcParams['font.sans-serif'] = ['SimHei']
# plt.rcParams['font.family']=['SimHei']
# 解決中文字體下坐標(biāo)軸負(fù)數(shù)的負(fù)號顯示問題
plt.rcParams['axes.unicode_minus'] = False?
由于mac電腦默認(rèn)沒有SimHei(黑體)字體,大家可以下載安裝該字體或者修改為系統(tǒng)自帶的字體如Arial Unicode MS,如下:# 以下代碼從全局設(shè)置字體為Arial Unicode MS,解決顯示中文問題【mac】
# 設(shè)置font.sans-serif 或 font.family 均可
plt.rcParams['font.sans-serif'] = ['Arial Unicode MS']
# plt.rcParams['font.family']=['Arial Unicode MS']
# 解決中文字體下坐標(biāo)軸負(fù)數(shù)的負(fù)號顯示問題
plt.rcParams['axes.unicode_minus'] = False?
rc方法,其實(shí)和設(shè)置rcParams 基本等效# 設(shè)置font字典為 SimSun(宋體),大小為12(默認(rèn)為10)
font = {'family' : 'SimSun',
? ? ? ? 'size' ?: '12'}
# 設(shè)置 字體
plt.rc('font', **font)
# 解決中文字體下坐標(biāo)軸負(fù)數(shù)的負(fù)號顯示問題 ? ? ? ?
plt.rc('axes', unicode_minus=False)?
?
四: 余弦函數(shù)plot()繪圖實(shí)例
# 余弦函數(shù) import matplotlib.pyplot as plt import numpy as np from pylab import mpl'''功能函數(shù): 展現(xiàn)變量的趨勢變化調(diào)用函數(shù): plt.plot(x,y,ls="_",lw=2,label="plot figure"參數(shù)說明: x軸上的數(shù)值y軸上的數(shù)值ls: 折線圖的折線風(fēng)格lw: 折線圖的線條寬度label: 標(biāo)記圖形內(nèi)容標(biāo)簽文本 ''' # 設(shè)置中文顯示字體 mpl.rcParams["font.sans-serif"] = ["SimHei"]# 設(shè)置正常顯示符號 mpl.rcParams["axes.unicode_minus"] = False x = np.linspace(0.05, 10, 1000)y = np.cos(x)plt.plot(x, y, ls='-', lw=2, label="余弦函數(shù)繪圖實(shí)例")plt.legend()plt.show()
五: 實(shí)例運(yùn)行結(jié)果?
? ? ?