当前位置: 首页 > 后端技术 > Python

使用Matplotlib进行数据可视化的快速入门指南

时间:2023-03-26 13:48:59 Python

图是数据探索过程的基础,它们使我们能够更好地理解我们的数据——例如,帮助识别异常值或需要完成的数据处理或作为一种工具为构建机器学习模型提供了新的思路和方法。绘制图表是任何数据科学报告的重要组成部分。Python有许多用于制作静态或动态图形的可视化库。在本教程中,我将尽力帮助您理解matplotlib逻辑。Matplotlib是Python绘图库的重要组成部分,创建它是为了在Python中启用类似MATLAB的绘图界面。如果没有MATLAB背景,可能很难理解所有matplotlib部分如何协同工作以创建所需的图形。但别担心,本教程会将其分解为逻辑组件,让您快速入门。Matplotlib中的图形对象是分层的。Figure对象由轴(或子图)组成;每个轴定义一个不同的图形对象(标题、图例、刻度、轴)。下图说明了matplotlib图的各个组成部分。要创建图形,请使用“pyplot.figure”函数,或使用“pyplot.add_subplot”函数向图形添加坐标轴。#importmatplotlibandNumpyimportmatplotlib.pyplotaspltimportnumpyasnp#在jupyternotebook中显示图形的魔术命令%matplotlibinline#创建一个图形fig=plt.figure()#addaxesax1=fig.add_subplot(2,2,1)ax2=fig.add_subplot(2,2,2)ax3=fig.add_subplot(2,2,3)在上面的代码片段中,我们定义了一个图,总共最多有4个图。我们正在选择四个子图中的三个。一种简单的方法是使用“plt.subplots”函数创建一个带轴的图形。fig,axes=plt.subplots(2,2)#firstsubplotaxes[0,0].scatter(np.arange(40),np.arange(40)+4*np.random.randn(40))#第二个subplotaxes[0,1].plot(np.random.randn(40).cumsum())#第三个子图_=axes[1,0].hist(np.random.randn(100),bins=20)#第四个subplotaxes[1,1].bar(np.arange(40),np.arange(40)+4*np.random.randn(40))plt.tight_layout()上图包含了不同的subplot类型。可以在matplotlib文档中找到完整的绘图类型目录。“Plt.tight_layout()”函数用于很好地自动分隔子图并避免拥挤。此外,可以使用“plt.subplots_adjust(left=None,bottom=None,top=None,wspace=None,hspace=None)”函数更改图形对象的默认间距。图,axes=plt.subplots(2,2,sharex=True,sharey=True)foriinrange(2):forjinrange(2):axes[i,j].plot(np.random.randn(40).cumsum())plt.subplots_adjust(wspace=0,hspace=0)线条样式、颜色和标记“plt.plot”函数可以选择接受表示颜色和线条样式的字符串缩写。例如,我们在下面的代码片段中画了一条红色虚线。fig,ax=plt.subplots()ax.plot(np.random.randn(30),'r--')我们可以使用linestyle和color属性指定线型和颜色。fig,ax=plt.subplots(1,1)ax.plot(np.random.randn(30),linestyle='--',color='r')matplotlib中可用的线型有:'-':Solidlinestyle'-':dashedlinestyle'-.':dottedlinestyle':':dashedlinestyle)使用光谱上的任何颜色。为了绘制折线图,??matplotlib在点之间进行插值。可以使用“marker”属性突出显示实际数据点,如下图所示。fig,ax=plt.subplots(1,1)ax.plot(np.random.randn(30),linestyle='dashed',color='k',marker='o')默认插值是线性的;但这可以使用“drawstyle”属性进行更改。以下示例说明了线性插值和后步插值。#datadata=np.random.randn(20).cumsum()#figurefig,(ax1,ax2)=plt.subplots(1,2,figsize=(12,4))ax1.plot(data,'k--')ax2.plot(data,'b-',drawstyle='steps-post')ticksandlabelsax对象(subplot对象)有不同的方法来自定义绘图:'Set_xticks'和set_xticklabels'改变x轴规模;'set_yticks'和set_yticklabels'改变y轴刻度;Set_title'为绘图添加标题。图,ax=plt.subplots(1,1)ax.plot(np.random.randn(1000).cumsum())ticks=ax.set_xticks([0,200,400,600,800,1000])labels=ax.set_xticklabels(['one','two','three','four','five','six'],rotation=30,fontsize=12)ax.set_title('Matplotlibplot')ax.set_xlabel('Stages',fontsize=12)另一种设置绘图属性的方法是使用属性字典的“set”方法。图,ax=plt.subplots(1,1)ax.plot(np.random.randn(1000).cumsum())props={'title':'Matplotlibtitle','xlabel':'Stages'}ax.set(**props)图例对于在同一图中绘制不同数据时识别绘图元素至关重要。因此,我们使用标签“labelandlegend”的方法来添加图例。图,ax=plt.subplots(1,1)ax.plot(np.random.randn(500).cumsum(),'k',label='Firstplot')ax.plot(np.random.randn(500).cumsum(),'k--',label='第二个情节')ax.plot(np.random.randn(500).cumsum(),'k.',label='第三个情节')ax.legend(loc='best')annotations要为子图添加注释,我们可以使用“文本”、“箭头”和注释函数。text将使用可选的自定义样式在绘图上的给定坐标(x,y)处绘制文本。fig,ax=plt.subplots()ax.plot(np.arange(30),'k')ax.text(5,15,'Helloworld!',family='monospace',fontsize=10)"注解"方法可以正确排列文本和箭头。图,ax=plt.subplots()ax.plot(np.linspace(0,10,200),np.sin(np.linspace(0,10,200)))ax.annotate('Min',xy=(4.7,-1),xytext=(4.5,-0.5),arrowprops=dict(facecolor='black',headwidth=6,width=3,headlength=4),horizo??ntalalignment='left',verticalalignment='top')ax.set_title('Annotationexample')Matplotlib有代表许多标准形状的对象,称为补丁。像矩形和圆形一样,有些在“matplotlib.pyplot”中,但整个集合在“matplotlib.patches”中。图,ax=plt.subplots()rect=plt.Rectangle((0.2,0.75),0.4,0.15,color='k',alpha=0.3)circ=plt.Circle((0.7,0.2),0.15,color='b',alpha=0.3)pgon=plt.Polygon([[0.15,0.15],[0.35,0.4],[0.2,0.6]],color='g',alpha=0.5)ax.add_patch(rect)ax.add_patch(circ)ax.add_patch(pgon)保存图像您可以使用“fig.savefig”将绘图保存到文件中。Matplotlib将从文件扩展名推断文件类型。例如,我们使用以下代码来保存图形的PDF版本。fig.savefig('figpath.pdf')总结本教程的目的是让您熟悉使用matplotlib进行数据可视化的基础知识。希望本文能对您的工作有所帮助。通过JaouadEddadsi