优秀的编程知识分享平台

网站首页 > 技术文章 正文

Python绘图-fig,ax方式绘图-学习笔记

nanyue 2024-10-14 11:32:59 技术文章 9 ℃

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');
123456

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()
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647

Tags:

最近发表
标签列表