一.基础知识准备
plt.scatter(x,y,s,c,marker)重要参数:x,y:绘制散点图的数据s:散点的大小c:散点的颜色marker:散点的形状(默认是圆形)
importpandasaspdimportnumpyasnpimportmatplotlib.pyplotaspltimportseabornassns%matplotlibinline#产生随机数data=np.random.randn(10)#绘制散点图plt.scatter(range(10),data,s=,c=b,alpha=0.4)
plt.text(x,y,s,horizontalalignment,verticalalignment)重要参数:x,y:文本放置的位置坐标s:文本的内容horizontalalignment:水平对齐控制参数(center/left/right三种可选)verticalalignment:垂直对齐控制参数(top,bottom,center,baseline,center_baseline五种可选)
#添加文本函数plt.text(0.5,0.5,test,fontdict={color:b,size:20})
#绘制10个位置的文本图plt.figure(figsize=(8,5))#绘制散点图plt.scatter(range(10),data,s=,c=b,alpha=0.5)#批量添加文本forx,yinzip(range(10),data):#添加文本plt.text(x,y,round(y,1),fontdict={size:10,color:k},horizontalalignment=center#这里的左对齐是指文本的左边与位置点对齐,右对齐同理,verticalalignment=center#这两个参数具体用法参见上篇文章)
matplotlib中的图像都可以分为画布(figure)和子图(Axes)画布:相当于是一张绘画的白纸,没有画布图像则无法显示子图:除去画布之外,一切绘制图形的对象都包含在子图中(如:axis/title/label等)在pyplot模块中,许多函数都是对当前的Figure或Axes对象进行处理,比如说:plt.plot()实际上会通过plt.gca()获得当前的Axes对象ax,然后再调用ax.plot()方法实现真正的绘图
如果我们想要去掉或者弱化图形的边框的话,我们首先需要先获取子图Axes,然后再对子图中的边框进行操作当前的图表和子图可以使用plt.gcf()和plt.gca()获得,分别表示GetCurrentFigure和GetCurrentAxes在matplotlib的图中,默认有四个轴,两个横轴和两个竖轴,可以用spines获取图像的轴,总共有四个轴top、bottom、left和right,可以用set_color来设置轴的颜色,用set_alpha来设置轴的色彩饱和度
#弱化坐标轴的第一种方法%matplotlibinline#创建画布并设定画布大小#facecolor设置外边框plt.figure(figsize=(6,6),dpi=60,facecolor=lightblue)#绘制散点图plt.scatter(range(10),data,s=,c=b,alpha=0.5)#获取当前坐标系处理右部分plt.gca().spines[right].set_alpha(0.3)#获取当前坐标系处理轴上部分plt.gca().spines[top].set_alpha(0.3)#显示图形plt.show()
#弱化坐标轴的第二种方法把画布和Axes对象分开来操作的话,可以使用fig,ax=plt.subplots()当画布和子图分开来操作的时候,如果要对轴进行弱化处理的话,可以直接用ax.spines进行设定,无需再获取当前子图
#弱化坐标轴的第二种方法fig,ax=plt.subplots(figsize=(6,6),facecolor=lightblue,dpi=60)#绘制散点图plt.scatter(range(10),data,s=,c=b,alpha=0.5)#获取当前坐标系处理右部分ax.spines[right].set_alpha(0.3)#获取当前坐标系处理轴上部分ax.spines[top].set_alpha(0.3)
二.原图形绘制
#方法一#导入数据集df=pd.read_csv("mtcars.csv")#列名name=[英里每加仑,气缸数量,排量,总马力,驱动轴比,重量,1/4英里所用时间,引擎形状,变速器,前进档数,化油器数量,用油是否高效,汽车,汽车名称]#提取出目标特征x=df.loc[:,[mpg]]#对于提取单列数据,如果在列名外加[]就会生成dataframe格式的数据,如果不加则生成series#对数据进行z-score标准化处理,将生成的标准化数据增加到df中df[mpg_z]=(x-x.mean())/x.std()#生成颜色标签df[colors]=[greenifx0elseredforxindf[mpg_z]]#根据标准化之后的数据,对整个数据集进行排序df.sort_values(mpg_z,inplace=True)#重置整个数据集的索引#df.reset_index(inplace=True)df.index=range(df.shape[0])#创建画布并设定画布大小plt.figure(figsize=(12,12),dpi=60)#绘制散点图plt.scatter(df.mpg_z,df.index,s=,alpha=0.6,color=df.colors)#添加文本forx,y,textinzip(df.mpg_z,df.index,df.mpg_z):plt.text(x,y,round(text,1),fontdict={color:w,size:10},horizontalalignment=center,verticalalignment=center)#设置坐标轴plt.gca().spines["top"].set_alpha(0.3)plt.gca().spines["bottom"].set_alpha(0.3)plt.gca().spines["right"].set_alpha(0.3)plt.gca().spines["left"].set_alpha(0.3)#添加装饰plt.title(DivergingDotplotofCarMileage,fontsize=20)plt.xlabel($Mileage$,fontsize=15)plt.yticks(df.index,df.carname,fontsize=12)plt.xlim(-2.5,2.5)plt.grid(linestyle=-.,alpha=.3);
#方法二#导入数据集df=pd.read_csv("mtcars.csv")#列名name=[英里每加仑,气缸数量,排量,总马力,驱动轴比,重量,1/4英里所用时间,引擎形状,变速器,前进档数,化油器数量,用油是否高效,汽车,汽车名称]#提取出目标特征x=df.loc[:,[mpg]]#对于提取单列数据,如果在列名外加[]就会生成dataframe格式的数据,如果不加则生成series#对数据进行z-score标准化处理,将生成的标准化数据增加到df中df[mpg_z]=(x-x.mean())/x.std()#生成颜色标签df[colors]=[greenifx0elseredforxindf[mpg_z]]#根据标准化之后的数据,对整个数据集进行排序df.sort_values(mpg_z,inplace=True)#重置整个数据集的索引#df.reset_index(inplace=True)df.index=range(df.shape[0])#创建画布并设定画布大小fig,ax=plt.subplots(figsize=(12,12),facecolor="white",dpi=60)#绘制散点图plt.scatter(df.mpg_z,df.index,s=,alpha=0.6,color=df.colors)#添加文本forx,y,textinzip(df.mpg_z,df.index,df.mpg_z):plt.text(x,y,round(text,1),fontdict={color:w,size:10},horizontalalignment=center,verticalalignment=center)#虚化图形边框ax.spines[right].set_alpha(.3)ax.spines[left].set_alpha(.3)ax.spines[bottom].set_alpha(.3)ax.spines[top].set_alpha(.3)#添加装饰plt.title(DivergingDotplotofCarMileage,fontsize=20)plt.xlabel($Mileage$,fontsize=15)plt.xticks(fontsize=12)plt.yticks(df.index,df.carname,fontsize=12)plt.xlim(-2.5,2.5)plt.grid(linestyle=-.,alpha=.3);cauwfq