6.1、坐標(biāo)軸概述
在繪制圖表過程中,matplotlib會(huì)根據(jù)所繪圖表的類型決定是否使用坐標(biāo)系,或者顯示哪種類型的坐標(biāo)系。
坐標(biāo)軸的結(jié)構(gòu)相同,主要包括軸脊、刻度,其中刻度又可以細(xì)分為刻度線和刻度標(biāo)簽,刻度線又可以細(xì)分為主刻線和次刻線。坐標(biāo)軸的各部分均是matplotlib類的對(duì)象:坐標(biāo)軸是axis.Axis類的對(duì)象;軸脊是spines.Spines類的對(duì)象;刻度是axis.Ticker類對(duì)象。此外,常用的x軸是一個(gè)axis.Xaxis類的對(duì)象,y軸是一個(gè)axis.Yaxis類的對(duì)象。
訪問spines屬性后返回一個(gè)OrderedDict類的對(duì)象。OrderedDict類是dict的子類,它可以維護(hù)添加字典中的鍵值對(duì)的順序。
6.2、向任意位置添加坐標(biāo)軸
該函數(shù)常用參數(shù)的含義如下:
(1)參數(shù)arg支持None、4-tuple中任一取值;
(2)參數(shù)projection表示坐標(biāo)軸的類型
(3)參數(shù)polar表示是否使用極坐標(biāo)
(4)參數(shù)aspect表示坐標(biāo)軸縮放的比例
(5)參數(shù)frame_on表示是否繪制每個(gè)坐標(biāo)軸的軸脊
示例代碼如下:
import matplotlib.pyplot as plt
ax=plt.axes((0.2,0.5,0.3,0.3))
ax.plot([1,2,3,4,5])
ax2=plt.axes((0.6,0.4,0.2,0.2))
ax2.plot([1,2,3,4,5])
plt.title(“2020080603051”)
plt.show()
6.3、定制刻度的位置和格式
6.3.1、定制刻度位置和格式
在matplotlib中,刻度線分為主刻度和次刻度線,次刻度線默認(rèn)是隱藏的。matplotlib.ticker模塊中提供了兩個(gè)類:Locator和Formatter,分別代表刻度定位器和刻度格式器,用于指定刻度線的位置和刻度標(biāo)簽的格式。
1、刻度定位器
Locator是刻度定位器的基類,它派生很多子類,可以自動(dòng)調(diào)整刻度的間隔、選擇刻度的位置。
2、刻度格式器
Formatter是刻度格式器的基類,它派生了很多子類,可以自動(dòng)調(diào)整刻度標(biāo)簽的格式。
6.3.2、定制刻度的樣式
在matplotlib中,坐標(biāo)軸的刻度有著固定的樣式,例如,刻度線的方向是朝外的,刻度線的顏色等。pyplot中可以使用tick_params()函數(shù)定制刻度的樣式。
axis:表示選擇操作的軸
reset:表示在處理其他參數(shù)之前均使用參數(shù)的默認(rèn)值
which:表示刻度的類型
direction:表示刻度的方向
length:表示刻度線的長度
width:表示刻度線的寬度
pad:表示刻度線與刻度標(biāo)簽的距離
labelsize:表示刻度標(biāo)簽的字體大小
labelrotation:表示刻度標(biāo)簽旋轉(zhuǎn)的角度
plt.tick_params(direction=‘in’,length=6,width=2,colors=‘orange’)
plt.title(“2020080603051”)
plt.show()
6.3.3、實(shí)例1:深圳24小時(shí)的平均風(fēng)速
代碼如下:
import numpy as np
from datetime import datetime
import matplotlib.pyplot as plt
from matplotlib.dates import DateFormatter,HourLocator
plt.rcParams[“font.sans-serif”]=[“SimHei”]
plt.rcParams[“axes.unicode_minus”]=False
dates=[‘201910240’,‘2019102402’,‘2019102404’,‘2019102406’,‘2019102408’,
‘2019102410’,‘2019102412’,‘2019102414’,‘2019102416’,‘2019102418’,
‘2019102420’,‘2019102422’,‘201910250’]
x_date=[datetime.strptime(d,‘%Y%m%d%H’) for d in dates]
y_date=np.array([7,9,11,14,8,15,22,11,10,11,11,13,8])
fig=plt.figure()
ax=fig.add_axes((0.0,0.0,1.0,1.0))
ax.plot(x_date,y_date,‘->’,ms=8,mfc=‘#FF9900’)
ax.set_title(‘51’)
ax.set_xlabel(‘時(shí)間’)
ax.set_ylabel(‘平均速度(km/h)’)
date_fmt=DateFormatter(‘%H:%M’)
ax.xaxis.set_major_formatter(date_fmt)
ax.xaxis.set_major_locator(HourLocator(interval=2))
ax.tick_params(direction=‘in’,length=6,width=2,labelsize=12)
ax.xaxis.set_tick_params(labelrotation=45)
plt.show()
6.4 、隱藏軸脊
6.4.1、隱藏全部軸脊
on ;顯示軸脊和刻度,等同于True
off:隱藏軸脊和刻度,等同于False
equal:通過更改軸限設(shè)置的等比例
scaled:通過更改繪圖框的尺寸設(shè)置等比例
tight:設(shè)置足夠大的限制以顯示所有的數(shù)據(jù)
auto:自動(dòng)縮放
示例代碼如下:文章來源:http://www.zghlxwxcb.cn/news/detail-457760.html
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.patches as mpathes
polygon=mpathes.RegularPolygon((0.5,0.5),6,0.2,color=‘orange’)
ax=plt.axes((0.3,0.3,0.5,0.5))
ax.add_patch(polygon)
ax.axis(‘off’)
plt.title(‘51’)
plt.show()
6.4.2、隱藏部分軸脊
示例代碼如下:
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.patches as mpathes
polygon=mpathes.RegularPolygon((0.5,0.5),6,0.2,color=‘g’)
ax=plt.axes((0.3,0.3,0.5,0.5))
ax.add_patch(polygon)
ax.spines[‘top’].set_color(‘none’)
ax.spines[‘left’].set_color(‘none’)
ax.spines[‘right’].set_color(‘none’)
plt.title(‘51’)
plt.show()
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.patches as mpathes
polygon=mpathes.RegularPolygon((0.5,0.5),6,0.2,color=‘pink’)
ax=plt.axes((0.3,0.3,0.5,0.5))
ax.add_patch(polygon)
ax.spines[‘top’].set_color(‘none’)
ax.spines[‘left’].set_color(‘none’)
ax.spines[‘right’].set_color(‘none’)
ax.yaxis.set_ticks_position(‘none’)
ax.set_yticklabels([])
plt.title(‘51’)
plt.show()
6.4.3、實(shí)例2:平均風(fēng)速(隱藏部分軸脊)
示例代碼如下:
import numpy as np
from datetime import datetime
import matplotlib.pyplot as plt
from matplotlib.dates import DateFormatter,HourLocator
plt.rcParams[“font.sans-serif”]=[“SimHei”]
plt.rcParams[“axes.unicode_minus”]=False
dates=[‘201910240’,‘2019102402’,‘2019102404’,‘2019102406’,‘2019102408’,
‘2019102410’,‘2019102412’,‘2019102414’,‘2019102416’,‘2019102418’,
‘2019102420’,‘2019102422’,‘201910250’]
x_date=[datetime.strptime(d,‘%Y%m%d%H’) for d in dates]
y_date=np.array([7,9,11,14,8,15,22,11,10,11,11,13,8])
fig=plt.figure()
ax=fig.add_axes((0.0,0.0,1.0,1.0))
ax.plot(x_date,y_date,‘->’,ms=8,mfc=‘#FF9900’)
ax.set_title(‘51’)
ax.set_xlabel(‘時(shí)間’)
ax.set_ylabel(‘平均速度(km/h)’)
date_fmt=DateFormatter(‘%H:%M’)
ax.xaxis.set_major_formatter(date_fmt)
ax.xaxis.set_major_locator(HourLocator(interval=2))
ax.tick_params(direction=‘in’,length=6,width=2,labelsize=12)
ax.xaxis.set_tick_params(labelrotation=45)
ax.spines[‘top’].set_color(‘none’)
ax.spines[‘right’].set_color(‘none’)
plt.show()
6.5、移動(dòng)軸脊
6.5.1、移動(dòng)軸脊的位置
outward:表示將軸脊置于移出數(shù)據(jù)區(qū)域指定點(diǎn)數(shù)的位置
axes:表示將軸脊置于指定的坐標(biāo)系中
data:表示將軸脊置于指定數(shù)據(jù)坐標(biāo)的位置
center:值為axes
zero:值為data
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.patches as mpathes
xy=np.array([0.5,0.5])
polygon=mpathes.RegularPolygon(xy,6,0.2,color=‘skyblue’)
ax=plt.axes((0.3,0.3,0.5,0.5))
ax.add_patch(polygon)
ax.spines[‘top’].set_color(‘none’)
ax.spines[‘right’].set_color(‘none’)
ax.spines[‘left’].set_position((‘data’,0.5))
ax.spines[‘bottom’].set_position((‘data’,0.5))
plt.title(‘51’)
plt.show()
6.5.2、實(shí)例3:正弦與余弦曲線
正弦曲線和余弦曲線都屬于周期性波浪線,他們?cè)谝粋€(gè)2π周期內(nèi)重復(fù)出現(xiàn)。下面以numpy生成100個(gè)位于-2np.pi和2np.pi之間的等差數(shù)列為例,分別求等差數(shù)列中各個(gè)數(shù)值的正弦值和余弦值,并根據(jù)這些正弦值和余弦值繪制曲線。
代碼如下:
import numpy as np
import matplotlib.pyplot as plt
plt.rcParams[“font.sans-serif”]=[“SimHei”]
plt.rcParams[“axes.unicode_minus”]=False
x_data=np.linspace(-2np.pi,2np.pi,100)
y_one=np.sin(x_data)
y_two=np.cos(x_data)
fig=plt.figure()
ax=fig.add_axes((0.2,0.2,0.7,0.7))
ax.plot(x_data,y_one,label=‘正弦曲線’)
ax.plot(x_data,y_two,label=‘余弦曲線’)
ax.legend()
ax.set_xlim(-2np.pi,2np.pi)
ax.set_xticks([-2np.pi,-3np.pi/2,-1np.pi,-1np.pi/2,
0,np.pi/2,np.pi,3np.pi/2,2np.pi])
ax.set_xticklabels([‘
?
2
π
-2\pi
?2π’,‘
?
3
π
/
2
-3\pi/2
?3π/2’,‘
?
π
-\pi
?π’,‘
?
π
/
2
-\pi/2
?π/2’,
‘
0
0
0’,‘
π
/
2
\pi/2
π/2’,‘
/
p
i
/
2
/pi/2
/pi/2’,‘
3
π
/
2
3\pi/2
3π/2’,‘
2
π
2\pi
2π’,])
ax.set_yticks([-1.0,-0.5,0.0,0.5,1.0])
ax.set_yticklabels([-1.0,-0.5,0.0,0.5,1.0])
ax.spines[‘top’].set_color(‘none’)
ax.spines[‘right’].set_color(‘none’)
ax.spines[‘left’].set_position((‘data’,0.5))
ax.spines[‘bottom’].set_position((‘data’,0.5))
plt.title(‘51’)
plt.show()文章來源地址http://www.zghlxwxcb.cn/news/detail-457760.html
到了這里,關(guān)于第六章、坐標(biāo)軸的定制的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!