在matplotlib中,整个图像为一个Figure对象。在Figure对象中可以包含一个或者多个Axes对象。每个Axes(ax)对象都是一个拥有自己坐标系统的绘图区域。所属关系如下:
Figure代表一个绘制面板,其中可以包涵多个Axes(即多个图表)。
Axes表示一个图表
一个Axes包涵:titlek, xaxis, yaxis
title为图像标题,Axis为坐标轴, Label为坐标轴标注,Tick为刻度线,Tick Label为刻度注释。各个对象关系可以梳理成以下内容:
坐标轴的核心组成元素:轴脊(4根) 刻度线 刻度标签
示例
import matplotlib.pyplot as plt
#解决中文显示的问题
plt.rcParams['font.sans-serif'] = 'SimHei'
plt.rcParams['axes.unicode_minus'] = False
x=[-2,-1,0,1,2]
y=[-2,-1,0,1,2]
plt.plot(x,y)
#获得当前的figure
ax = plt.gca()
#设置坐标轴颜色
ax.spines['right'].set_color('r')
ax.spines['top'].set_color('y')
ax.spines['left'].set_color('r')
ax.spines['bottom'].set_color('y')
#设置坐标轴宽度 缩写lw
ax.spines['bottom'].set_linewidth(3)
ax.spines['left'].set_lw(3)
ax.spines['top'].set_linewidth(5)
ax.spines['right'].set_lw(5)
#设置坐标轴样式 缩写ls
ax.spines['top'].set_linestyle('--')
ax.spines['right'].set_ls('-.')
#设置坐标轴标签字体样式
plt.xlabel('成绩',fontdict={"color":'red','size':30})
#设置坐标轴刻度显示方向
plt.xticks([-2,-1,0,1,2],rotation='vertical')
#设置坐标轴刻度数值与名称
plt.yticks([-2,-1,0,1,2],['-π','-π/2','0','π/2','π'],\
fontdict={"color":'red','size':20})
#设置坐标轴刻度的显示位置
#ax.xaxis.set_ticks_position('top')
#隐藏坐标轴
#ax.spines['top'].set_color('none')
#ax.spines['right'].set_color('none')
#设置坐标轴交叉显示
#ax.spines['bottom'].set_position('center')
#ax.spines['left'].set_position('center')
plt.show()
Axis容器
Axis容器包括也坐标轴上的刻度线、刻度文本、坐标网格以及坐标轴标题等内容。
刻度包括:主刻度(get_major_ticks)和副刻度(get_minor_ticks)
每个刻度线都是一个xTick或yTick对象,它包括实际的刻度线和刻度文本。
FigureCanvas 和 Renderer 需要处理底层的绘图操作
Artist对象则处理所有的高层结构,例如处理图表、文字和曲线线等各种绘图元素的绘制和布局。
通常我们只和Artist对象打交道,而不需要关心底层是如何实现绘图细节的。
Artist对象分为简单类型和容器类型两种。
简单类型的Artist对象是标准的绘图元件,例如 Line2D、Rectangle、Text、AxesImage等。
而容器类型则可以包含多个Artist对象,使它们组织成一个整体,例如Axis、Axes、Figure等。
刻度定位器(locator):设置刻度线的位置。
刻度格式器(formatter):设置刻度标签的显示样式。
ax.tick_params( #which=“major”
which:设置主刻度的样式
length:设置主刻度线的长度
width:设置主刻度线的宽度
colors:设置主刻度线和主刻度标签的颜色)
ax.tick_params( #which=“minor”
which:设置副刻度的样式
length:设置副刻度线的长度
width:设置副刻度线的宽度
labelsize:设置副刻度标签的大小
labelcolor:设置副刻度标签的颜色)
有指示注解
ax.annotate(
s:注解内容
xy:被注解位置
xycoords:xy的坐标系统与折线图在同一坐标系统中
xytext:注释文本的位置
weight:注解内容的显示风格
color:注解内容的颜色
arrowprops:指示箭头的属性,箭头风格、颜色 )
无指示注解
ax.text(
xy:注解文本所在的横纵坐标
string:注释文本内容
weight:注释文本内容的粗细风格
color:注释文本内容的字体颜色 )
具体示例可参考之前的例子