数据可视化之matlibplot二维绘图
概括性简单操作
import matplotlib.pyplot as plt #导入matlibplot库
fig = plt.figure() #声明画板对象,在这个对象上面画图,可传入参数fig = plt.figure(fig_name, figsize=),其中fig_name为str型
ax = fig.add_subplot(221) #声明Axes对象,里面的221为Axes对象,表示将整个画板划分为2行*2列的方格,这样就一共4个子图,然后1表示这是第一个子图。也可用ax = plt.subplot(r, c, p)
ax.set(xlim=[0.5, 4.5], ylim=[-2, 8], title='An Example Axes',ylabel='Y-Axis', xlabel='X-Axis') #使用set的方法设置Axes对象xy轴的范围,轴名称和标题
x = np.arange(10)
y = np.random.randn(10)
ax.plot(x, y, color='red') #用定义的xy数据,红线绘图
plt.show() #绘图展示
几个常用函数的函数的具体说明
Axes对象及画板的操作
Axes对象是来定义轴axis的,二维则限定两个轴,三维则限定三个轴,所以对每一个Axes对象均可以有以下操作:
set_xlim([xmin, xmax]) 和 set_ylim([xmin, xmax]) #设置XY轴的数值限制,参数 left, right左右段的极值
set_title() #设置对象的标题
set_xlabel() 和 set_ylabel() #设置轴的名字
set_xticks / set_yticks(posi_list) #设置坐标轴点到原点距离,参数是序列
set_xticklabels / set_yticklabels() #设置轴点的名称,参数是name_list名称列表和rotation顺时针角度
注xticks / yticks、xlabel / ylabel、title、axis可以直接plt. 进行使用
Axes对象加入参数后,像是把画板划分成了一个矩阵,那是否可以使用二维矩阵的方式进行设置呢?答案是肯定的,可以使用二维数组的方式进行如下设置
fig, axes = plt.subplots(nrows=2, ncols=2,sharex=False, sharey=False,frameon=False) #同时生成画板和相应子图区域,sharex表示是否共享x轴,frameon表示是否显示边框
axes[0,0].set(title='Upper Left')
axes[0,1].set(title='Upper Right')
axes[1,0].set(title='Lower Left')
axes[1,1].set(title='Lower Right')
布局调整:调整Axes子图的布局
fig.subplots_adjust(wspace=0.5, hspace=0.3, left=0.125, right=0.9, top=0.9, bottom=0.1) #wspace调整水平间距,hspace垂直向上的距离,left为左边距,right右边距,注意这些数值都是百分数,比如右边距是10%
fig.tight_layout() #自动调整布局
ax.margins(x=0.1, y=0.1) #用于调整子图的内边距
边界调整
ax.spines['top'].set_visible(False) #设置Axes对象的顶边界不可见,也就是子图框顶上那根线不可见
2D绘图
常见的几种绘图
plt.plot(X,Y,c=, label=) #直线图,XY为绘制点的列表,c控制颜色,label控制线条标签名
plt.scatter(X,Y,s=None, c='r', marker='o', cmap=None, norm=None,label=‘图例注释’,alpha=,linewidths,verts,edgcolors,cmap) #散点图,XY为绘制点的列表,c为颜色,maker为图标形式,默认圆,norm为数据亮度(0-1范围内),alpha为透明度,linewidths,verts,edgcolors分别是点的边缘线宽、xy序列及边缘颜色,cmap控制渐变色
#绘制空心点可以将c='',然后边缘填充上颜色这种方式绘制
plt.hist(X,bins=10,range=) #直方图,bins表示间隔,range是绘制直方图的范围
plt.bar / barh(bar_position, bar_height, bar_width) #柱状图,控制坐标轴,柱状高度,柱状宽
plt.boxplot(data) #箱形图,data为序列或数组类型
plt.contour() #等高线
plt.contourf() #带填充的等高线
其他操作
plt.legend() #可以用于设置图例的边框、标签、字体等设置,也可以合并图例(多图例显示)
plt.savefig(r'C:\Users\jichao\Desktop\大论文\12345svm.png', dpi=300) #保存图片
ax.annotate(s, xy, *args, **kwargs) #注释文本时使用,s表示文本内容,xy是需要注释位置(元组型)、xytext:注释文本的坐标点(元组)、xycoords:被注释点的坐标系属性、textcoords :注释文本的坐标系属性,arrowprops:箭头的样式(字典形式,关键字是arrowstyle)等。
3D绘图
mport matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D