matplotlib绘制图标
1.matplotlib的内容组织在画布上(及绘图区),图形的Axes实例包含了matolotlib的所有组成元素,如坐标轴,刻度,标签,线和标记等,这些元素通过调用matplotlib.pyplot模块中相应的函数,进行不同元素的属性定制
2.数据准备:
导入科学计算包Numpy和快速绘图模块pyplot,其中Numpy是matplotlib库的基础,即matplotlib是建立在Numpy基础之上的Python会图库
展现变量的趋势变化的函数-plot()
语法:plt.plot(x,y,ls=’-’,lw=2,label=‘plot figure’)
参数:x:x轴上的数值 y:y轴上的数值 ls:折线图的线条风格 lw:折线图的线条宽度 label:标记图形内容的标签文本
图像设置:图像尺寸设置-figure()
语法:plt.figure(num=1,figsize=(8,5)) 参数:num:绘图编号,未指定时,系统默认首图为1 figsize:图像大小的设置,设置对象为整个轴线框的尺寸;默认每英寸为80像素
# 图像设置:线形设置-plt()
语法:plt.plot(x,y_1,color=‘r’,linewidth=1.5,linestyle=’–’,marker=’+’,alpha=0.1)
参数:color:线的颜色
linewidth:线宽
linestyle:线形 常见线形:"- 实线"、"- - 短线"、"-. 短点相间线"、": 虚点线"
marker:线的标记 常见标记参考相关资料
alpha:透明度设置,该值的范围为0~1,数值越大,透明度越低。
备注:
颜色的设置有以下几种:
(1) 使用颜色全称代号,即color=‘r’ 或者color=‘red’;
(2) 使用颜色16进制,color=’#FF0000’;
(3) 使用颜色RGB或RGBA元组,即 color=(1,0,0) 或 color=(1,0,0,1),前者为RGB模式,后者为RGBA模式,两者前三个数字相同,RGBA模式的最后一个数字表示颜色的透明度,范围是0-1。另外需要注意的是,Matplotlib中的RGB格式和常见的RGB格式不太相同,Matplotlib中的RGB数值均为 0-1,而我们常见的RGB格式为 0~255;
(4) 使用灰度强度进行表示:即 color=0.5,关于灰度值的具体定义和计算,可以参照相关资料,
添加图形内容细节的无指向型注释文本-text()
plt.text(x,y,string,fontsize=15,verticalalignment=“top”,horizontalalignment=“right”)
x,y:表示坐标值上的值
string:表示说明文字
fontsize:表示字体大小
verticalalignment:垂直对齐方式 ,参数:[ ‘center’ | ‘top’ | ‘bottom’ | ‘baseline’ ]
horizontalalignment:水平对齐方式 ,参数:[ ‘center’ | ‘right’ | ‘left’ ]
寻找变量间的关系-scatter()
语法:plt.scatter(x,y,c=‘b’,label=‘scatter figure’) 参数:x:x轴上的数值 y:y轴上的数值 c:散点图中的标记颜色 label:标记图形内容的标签文本
设置x轴的数值显示范围-xlim()
设置x轴的标签文本-xlabel()
语法:plt.xlabel(string) 参数:string:标签文本内容 说明:上述函数同样适用于y轴 ylabel()
绘制刻度线的网格线-grid()
语法:plt.grid(linestyle-’:’,color=‘r’) 参数:linestyle:网格线的线条风格 color:网格线的线条颜色
绘制平行于x轴的水平参考线-axhline()
语法:plt.axhline(y=0.0,c=‘r’,ls=’–’,lw=2) 参数:y:水平参考线的出发点 c:参考线的线条颜色 ls:参考线的线条风格 lw:参考线的线条宽度 说明:上述功能和参数同样适用于y轴axvline()
绘制平行于x轴的参考区域-axhspan()
语法:plt.axhspan(ymin=1.0,ymax=2.0,facecolor=‘y’,alpha=0.3) 参数:xmin:参考区域的起始位置 xmax:参考区域的终止位置 facecolor:参考区域的填充颜色 alpha:参考区域填充颜色透明度 说明:上述函数和说明同样适用于函数axhspan()
添加图形内容细节的指向型注释文本-annotate()
语法:plt.annotate(string,xy=(np.pi/2,1.0),xytext=((np.pi/2)+0.15,1.5),weight=‘blod’,color=‘b’,arrowprops=dict(arrowstyle=’-.>’,connectionstyle=‘arc3’,color=‘b’) 参数:string:图形内容的文本注释 xy:被注释内容的位置坐标 xytext:注释文本的位置坐标 weight:注释文本的字体粗细风格 color:注释文本的字体颜色 arrowprops:指示被注释内容的箭头的属性字典 connectionstyle:设置线的角度,弧度,arc3二次样条线段
添加图形内容的标题-title()
语法:plt.title(string)
标示不同图形的文本标签图例-legend()
语法:plt.legend(loc=‘lower left’)
参数:loc:图例在图中的地理位置, 取值可为: “best、upper right、upper left、lower left、lower right、right、center left、center right、lower center、 upper center、center”
best:即系统自动将标签放置在空白较多的区域
设置X轴刻度、标签:xticks()
语法:plt.xticks(ticks, [labels], **kwargs)
参数:ticks:数组类型,用于设置X轴刻度间隔
[labels]:数组类型,用于设置每个间隔的显示标签
**kwargs:用于设置标签字体倾斜度和颜色等外观属性
备注:该思路也可用于设置y轴刻度和标签:yticks()
同一图中有多个图像- subplot()
语法:plt.subplot(nrows, ncols, index, **kwargs)
第一个参数:*args (官网文档描述)
可以使用三个整数,或者三个独立的整数来描述子图的位置信息。如果三个整数是行数、列数和索引值,子图将分布在行列的索引位置上。索引从1开始,从右上角增加到右下角。 位置是由三个整型数值构成,第一个代表行数,第二个代表列数,第三个代表索引位置。举个列子:plt.subplot(2, 3, 5) 和 plt.subplot(235) 是一样一样的。需要注意的是所有的数字不能超过10。
第二个参数:projection : {None, ‘aitoff’, ‘hammer’, ‘lambert’, ‘mollweide’, ‘polar’, ‘rectilinear’, str}, optional 可选参数:可以选择子图的类型,比如选择polar,就是一个极点图。默认是none就是一个线形图。
第三个参数:polar : boolean, optional 如果选择true,就是一个极点图,上一个参数也能实现该功能。
图像分栏:针对不均匀分栏的更便捷方法
subplot2grid()
语法:plt.subplot2grid((3,3),(0,0),colspan=3,rowspan=1) 参数:(3,3)表示三行三列,(0,0)表示从0行0列开始,其中0,0是index
图像分栏:针对不均匀分栏的更便捷方法
gridspec.GridSpec()
import matplotlib.gridspec as gridspec
import matplotlib.pyplot as plt
gs=gridspec.GridSpec(3,3)
ax_1=plt.subplot(gs[0,:])
ax_1.set_title('ax_1_title')
ax_2=plt.subplot(gs[1,0:2])
ax_2.set_title('ax_2_title')
ax_3=plt.subplot(gs[1:,2])
ax_3.set_title('ax_3_title')
ax_4=plt.subplot(gs[-1,-3])
ax_4.set_title('ax_4_title')
ax_5=plt.subplot(gs[-1,-2])
ax_5.set_title('ax_5_title')
plt.show()
图像分栏:更便捷方法(3)-subplots()
语法:f,((ax_1,ax_2),(ax_3,ax_4)) = plt.subplots(2,2,sharex=True,sharey=True)
参数:首先 f, 是定义了一个图像,其中 f 是figure 的缩写,也可以写成fig,然后设置2行2列的网格图,四个网格图共享xy轴
需要注意的是,为了使整个图像更加的紧凑,代码使是用了plt.tight_layout()。
# 图中图设置-plt.figure().add_axes()或plt.axes()
用途:在某些情况下,我们需要对图中的细节进行放大,一般我们通过在图中进行绘制另一个小图,即图中图的模式
语法:plt.figure().add_axes([left,bottom,width,height])或plt.axes([left,bottom,width,height])
参数:[left,bottom,width,height] 表示距离整个图框边缘的比例,如 left=0.1 表示整个图框从左向右的百分之10的位置绘制左框线,然后在 width=0.8 位置 绘制右框线,同理bottom 和 height。
import matplotlib.pyplot as plt
import matplotlib.gridspec as gridspec
fig = plt.figure(figsize=(8,8))
x = [1,2,3,4,5,6,7,9,8,10]
y = [1,3,4,2,5,10,9,7,8,6]
left,bottom,width,height = .1,.1,.8,.8
ax_1 = fig.add_axes([left,bottom,width,height])
ax_1.plot(x,y,'r')
ax_1.set_xlabel('x')
ax_1.set_ylabel('y')
ax_1.set_title('title')
left,bottom,width,height = .2,.6,.25,.25
ax_2 = fig.add_axes([left,bottom,width,height])
ax_2.plot(x,y,'b')
ax_2.set_xlabel('x')
ax_2.set_ylabel('y')
ax_2.set_title('title inside_1')
plt.axes([0.6,0.2,0.25,0.25])
plt.plot(y[::-1],x,'g')# (y[::-1],x) 表示x数据正序,而y数据降序。
plt.xlabel('x')
plt.ylabel('y')
plt.title('title inside_3')
plt.show()
参考博客:
注解1.x,y轴百分比
https://blog.csdn.net/u014712482/article/details/80571938?utm_medium=distribute.pc_relevant_download.none-task-blog-2defaultBlogCommendFromBaidudefault-1.nonecase&depth_1-utm_source=distribute.pc_relevant_download.none-task-blog-2defaultBlogCommendFromBaidudefault-1.nonecas