Figure vs Axes 对象层次结构(object hierarchy.),是Matplotlib概念中一个重要的地方。
下图显示了这种对象层次结构,Figure相当于一张白纸——可称做画布,Axes则是画布中的一块区域。Axes下面又包括了一下绘图较小的对象,如刻度线、图例和文本等。 如下图所示一个Figure中包括两个Axes,每一个Axes又包括不同的曲线。 Matplotlib将其表现为图形解剖,而不是显式的层次结构:
plt.figure() vs plt.axes() vs plt.subplots() plt.figure()返回Figure实例
plt.axes()返回Axes或其子类
plt.subplots()返回Figure实例和Axes(或一组axes)
在创建一个空白的画布时,建议使用:
fig,ax = plt.subplots() 1 之后就可以使用ax下面的方法对图像进行调整
plt.xxx vs ax.xxx plt.plot() → \rightarrow→ ax.plot()
plt.legend() → \rightarrow→ ax.legend()
plt.xlabel() → \rightarrow→ ax.set_xlabel()
plt.ylabel() → \rightarrow→ ax.set_ylabel()
plt.xlim() → \rightarrow→ ax.set_xlim()
plt.ylim() → \rightarrow→ ax.set_ylim()
plt.title() → \rightarrow→ ax.set_title()
在绘图时,使用ax.set()函数一次性设置完比较好,如:
x = np.linspace(0, 10, 1000) ax = plt.axes() ax.plot(x, np.sin(x)) ax.set(xlim=(0, 10), ylim=(-2, 2), xlabel='x', ylabel='sin(x)', title='A Simple Plot');参考链接
import matplotlib.pyplot as plt import numpy as np A = np.arange(1,5) B = A**2 C = A**3 fig,ax=plt.subplots(figsize=(14,7),dpi=72) #设置16:9画布的2x2画面,这里注意是subplots ax.plot(A,B,label='Xlabel',alpha=100000) #x轴为A,y轴为B,设置标签为Xlabel,透明度为100000 ax.plot(B,A,label='Ylabel',alpha=100000) #x轴为B,y轴为A,设置标签为Ylabel,透明度为100000 ax.set_title('Test',fontsize=18) #设置画面标题为Test,大小为18 ax.set_xlabel('Xlabel',fontsize=12,fontfamily='sans-serif',fontstyle='italic') #设置X轴标题为Xlabel,大小为12,字体为san-serif,字体风格为italic ax.set_ylabel('Ylabel',fontsize='x-large',fontfamily='oblique') #设置Y轴标题为Ylabel,大小为x-large,字体风格为oblique ax.legend() #设置画面的legend ax.set_aspect('equal') #x和y的縮放比例相同 ax.minorticks_on() #次坐标 ax.set_xlim(0,16) #x轴刻度范围设置 ax.grid(which='minor',axis='both') #网格线设置 ax.xaxis.set_tick_params(rotation=90,labelsize=12,colors='r') #设置刻度线参数 ''' ax.tick_params(direction='out', length=6, width=2, colors='r', grid_color='r', grid_alpha=0.5) 這將使所有主要刻度線變為紅色,即開即用,並且尺寸為6點乘2點。刻度線標籤也將為紅色。 網格線將是紅色且半透明的。 ''' start,end=ax.get_xlim() #获取x轴的起始点 ax.xaxis.set_ticks(np.arange(start,end,1)) #设置x轴 ''' Axis.set_ticks(self,ticks,*,minor = False) tickslist of floats List of tick locations. minorbool, default: False If False, set the major ticks; if True, the minor ticks. ''' ax.yaxis.tick_right() #将Y坐标移至右边 plot.show()