Figure对象
创建对象最简单的方法pyplot
fig=plt.figure()
fig.suptitle('a figure')
fig,ax=plt.subplots(2,2)
Axes对象
坐标轴对象(包含x,y,z轴等),即包含了多个Axis对象
用set_xlim/set_ylim()来设置坐标轴的范围
用set_xlabel()设置坐标轴标签(类似title)
利用axes辅助方法创建原始的Artist对象
ax.annotate()–文字注释
ax.fill()–共享区域
ax.imshow()–图像数据
ax.legend()–图轴例
ax.plot()–xy轴
Axis对象
负责生成刻度线(major tick,minor tick)和刻度线标签(tickLabels)
刻度线位置Locator,标签字符串由Formatter格式化
Artist对象
图上的所有对象基本都属于艺术家对象,艺术家对象有两种类型:基元和容器。基元表示要在画布上画的东西,容器是放置这些基元的位置(Axes,Axis,Figure)。首先创建一个figure对象,然后用figure创建一个或多个axes或subplot实例,这样可以实例化图例,并与用户界面连接起来。例如:1、用pyplot处理绘图fig=plt.figure(),ax=fig.add_subplot(2,1,1),添加默认位置的绘图。2、用Axes处理绘图,fig=plt.figure(),ax=fig.add_axes([0,0,1,1]),可以自定义位置和大小,更灵活,可以把subplot看作是特殊封装的axes,简洁但缺乏灵活性。
Matplotlib交互模式、阻塞模式
可以开启多窗口模式
在交互模式下,plt.plot()就可显示图像,不需要plt.show()(plt.draw()可以用来刷新图像)
阻塞模式下,只能打开一个窗口,关掉了才能打开另一个
一般matplotlib默认是开启交互模式的(plt.ioff()关闭)
shell中一般是阻塞模式
分类变量绘图
plt.bar(names,values)
names=[‘a’,’b’,’c’]
values=[1,10,100]
设置坐标轴刻度标签(横坐标为a,b,c……)
设置线属性
- 直接使用关键字
plt.plot(x,y,linewidth=2.0)
- 使用setp()关键字
lines=plt.plot(x,y)
plt.setp(lines,color=’r’,linewidth=2.0,……)
多图形和轴
使用gca()返回当前的轴axes实例对象
使用gcf()返回当前图像figure实例对象
clf()清楚当前图,cla()清楚当前轴
TeX文本表达式
r’content:$\lambda=100,\\sigma=15$’
–content:λ=100,σ=15适用于所有matplotlib文本(title,text等)
非线性轴
坐标轴可以支持log对数刻度来表示高数量级数字
plt.xscale('log')
显示图像
Image=plt.imread(image_file)#读文件
fig,ax=plt.plot()
ax.imshow(image)#读取图像数据
构图风格
plt.style.use(‘dark_background’)
rc设置
自定义图形的各种默认属性(matplotlib样式表),包括窗体大小、线条宽度颜色,坐标轴、网格属性等
print(matplotlib.rcParams)
查看默认配置,来进行修改
rc中默认字体font.family字体、fontstyle样式、fontvariant字体大小写、fontstretch拉伸、fontweight字体粗细、fontsize
约束布局
plt.rcParams['figure.constrained_layout.use'] = True
,可以防止多个子图标签相互干扰以及标签或标题超出图形区域。(推荐每画一张图都把这个rc设置加上)
颜色设定(5种形式)
1、一般有两种:RGB和RGBA两种。
在[0,1]浮点值RGB元组(0.1,0.2,0.3)中,三个参数分别表示红绿蓝三个的程度,而在RGBA中有四个参数多一个透明度Alpha
2、十六进制RGB或RGBA字符串(如:#OFOFOF)
3、一个X11/CSS4颜色名称,用法
import matplotlib._color_data as mcd
cn=mcd.CSS4_COLORS[]
4、xkcd颜色调查的名称,以‘xkcd:’为前缀
xkcd=mcd.XKCD_COLORS[‘xkcd:’+n]
ax.plot(x,y,’xkcd’)
5、CN颜色规范:C后面跟一个数字,如ax.plt(x,y,’C1’)
图形位置、大小设置
1、 从Figure对象上进行设置
1.self.fig.subplots_adjust(0,0,1,1)
2.plt.rcParams[‘figure.subplot.left’] =0#rc设置
2、 从axes图像上进行设置
axes.set_position([0,0,1,1])
两种试下来的区别是:第一种是可以把figure的标题放到图形的内部中来,但axes的坐标轴无法放进来,而且如果两者都在图像外部不会相互干扰;第二种两者都不能放到图像内,而且标题之间会相互干扰哦。
基本文本命令
annotate在Axes上任意位置添加带可选箭头的注解
用法:`
axes.annotate(‘text’,xy=(2,1),xytext(3,4),
arrowprops=dict(facecolor=‘black’,shrink=0.5))`
xy表示箭头指向的位置坐标,xytext表示注解位置坐标,arrowprops为箭头的属性
set_xlabel在x轴上添加标签
set_title为Axes添加标题
设置标题的位置axes.set_title(‘text’,loc=’center/left/right’)
suptitle为图像添加标题
text在Axes上任意位置上添加文本
axes.text(3,8,”text”,style=’italic’,bbox={‘facecolor’:’red’,alpha=0.5},fontsize=15,fontweight=’bold’,color=’green’)
text中可以设置位置,内容,字体大小粗细颜色,背景颜色,透明度等
位置设定还可以通过alignment来对准,如:
Axes.text(verticalaligement=’bottom/top/center’,horizontalalignment=’right/left/center’)
前者指y轴,后者为x轴,即放置在右下角位置,这个属性其他一些文本命令中也适用。