|
文章目录1什么是Matplotlib1.1Matplotlib的安装1.2Matplotlib的基本使用2绘制直线3绘制折线设置标签文字和线条粗细设置中文风格的设置4绘制曲线绘制曲线y=x^2绘制正弦曲线和余弦曲线画布分区5绘制散点图绘制不同种类不同颜色的线6绘制条形图(柱状)绘制带方差的条形图7绘制饼状图7绘制直方图8绘制盒图9绘制三维图练习1.用matplotlib绘制余切曲线并保存成图片。2.用matplotlib绘制生成3行2列的子画布,第1行第1列绘制余弦曲线和第3行第3列绘制正弦曲线。3.用matplotlib绘制一个饼状图(数据可以自定指定)。4.用matplotlib绘制一个柱状图分析3部电影3天的票房。1什么是Matplotlib\qquadMatplotlib是一个Python的2D绘图库。通过Matplotlib,开发者可以仅需要几行代码,便可以生成绘图,直方图,功率谱,条形图,错误图,散点图等。官网https://matplotlib.org/\qquad学习Matplotlib可让数据可视化,更直观的真实给用户。使数据更加客观、更具有说服力。Matplotlib是Python的库,又是开发中常用的库1.1Matplotlib的安装pipinstallmatplotlib11.2Matplotlib的基本使用\qquad在使用Matplotlib绘制图形时,其中有两个最为常用的场景。一个是画点,一个是画线。pyplot基本方法的使用如下表。2绘制直线importmatplotlib.pyplotasplt#将(0,1)点和(2,4)连起来plt.plot([0,2],[1,4])plt.show()123453绘制折线importmatplotlib.pyplotaspltx=[1,2,3,4,5]squares=[1,14,39,16,25]plt.plot(x,squares)plt.show()123456设置标签文字和线条粗细importmatplotlib.pyplotaspltdatas=[1,2,3,4,5]squares=[1,14,39,16,25]plt.plot(datas,squares,linewidth=5)#设置线条宽度#设置图标,并在坐标轴上添加标签plt.title('Numbers',fontsize=24)plt.xlabel('datas',fontsize=14)plt.ylabel('squares',fontsize=14)plt.show()12345678910设置中文Matplotlib默认情况不支持中文,我们可以使用以下简单的方法来解决:importmatplotlib.pyplotasplt#准备数据datas=[1,2,3,4,5]squares=[1,14,39,16,25]#注意x和squares列表中元素个数要相同plt.plot(datas,squares,linewidth=5)#设置线条宽度plt.rcParams['font.sans-serif']=['SimHei']#用来正常显示中文标签#添加plt.title('设置',fontsize=24)#x轴添加标签plt.xlabel('X轴',fontsize=14)#y轴添加标签plt.ylabel('Y轴',fontsize=14)#显示图形plt.show()12345678910111213141516风格的设置importmatplotlib.pyplotasplt#查看matplotlib中有哪些风格#print(plt.style.available)#设置风格plt.style.use('ggplot')plt.plot([1,2],[1,4])plt.show()123456789某周最高温度和最低温度变化importmatplotlib.pyplotasplt#构造数据max_temperature=[26,30,31,32,33]min_temperature=[12,16,16,17,18]x=range(5)plt.rcParams['font.family']=['SimHei']x_ticks=['星期{}'.format(i)foriinrange(1,6)]plt.title('某年某周第N周的温度')plt.xlabel('周')plt.ylabel('温度:单位(℃)')#设置x轴标签plt.xticks(x,x_ticks)#填充数据plt.plot(x,max_temperature,label='最高温')plt.plot(x,min_temperature,label='最低温')#显示图例plt.legend(loc=2)plt.show()12345678910111213141516171819204绘制曲线绘制曲线y=x^2Matplotlib有很多函数用于绘制各种图形,其中plot函数用于曲线,需要将200个点的x坐标和Y坐标分别以序列的形式传入plot函数,然后调用show函数显示绘制的图形。【示例】一元二次方程的曲线importmatplotlib.pyplotasplt#准备数据x是200个点x=range(-100,100)#y=x**2y=[i**2foriinx]#设置风格plt.style.use('ggplot')#调用plotplt.plot(x,y)#保存图片plt.savefig('y=x的平方.jpg')plt.show()12345678910111213绘制正弦曲线和余弦曲线使用plt函数绘制任何曲线的第一步都是生成若干个坐标点(x,y),理论上坐标点是越多越好。本例取0到10之间100个等差数作为x的坐标,然后将这100个x坐标值一起传入Numpy的sin和cos函数,就会得到100个y坐标值,最后就可以使用plot函数绘制正弦曲线和余弦曲线。importmatplotlib.pyplotaspltimportnumpyasnp#生成x的坐标(0-10的100个等差数列)x=np.linspace(0,10,100)y=np.sin(x)#绘制正弦曲线plt.plot(x,y,label="sin")#绘制余弦曲线plt.plot(x,np.cos(x),label="cos")#给图像加图例plt.legend()plt.show()1234567891011121314画布分区【示例】subplot分区importmatplotlib.pyplotaspltimportnumpyasnpx=np.linspace(0,10,100)#plt.plot(x,np.sin(x))#plt.plot(x,np.cos(x))#将画布分为区域,将图画到画布的指定区域subplot()画布分区#将画布分为2行2列在第三个区域绘制图形#两种传递参数都可以plt.subplot(2,2,1)plt.plot(x,np.sin(x))plt.subplot(222)plt.plot(x,np.cos(x))plt.subplot(2,2,3)plt.plot(x,np.cos(x))plt.subplot(224)plt.plot(x,np.sin(x))plt.show()1234567891011121314151617181920【示例】subplot分区#将画布分为2行2列,将图画到画布的1区域plt.subplot(221)12【示例】subplots分区importmatplotlib.pyplotaspltimportnumpyasnpx=np.linspace(0,10,100)#plt.plot(x,np.sin(x))#plt.plot(x,np.cos(x))#将画布分为区域,将图画到画布的指定区域subplot()画布分区#将画布分为2行2列在第三个区域绘制图形#两种传递参数都可以plt.subplot(2,2,1)plt.plot(x,np.sin(x))plt.subplot(222)plt.plot(x,np.cos(x))plt.subplot(2,2,3)plt.plot(x,np.cos(x))plt.subplot(224)plt.plot(x,np.sin(x))#使用subplots()进行画布分区fig,ax=plt.subplots(nrows=2,ncols=3)ax[0][0].plot(x,np.sin(x))ax[1][2].plot(x,np.cos(x))#ax[行索引,列索引]ax[0,2].plot(x,np.sin(x))ax[1,0].plot(x,np.cos(x))plt.show()12345678910111213141516171819202122232425265绘制散点图用两组数据构成多个坐标点,考察坐标点的分布,判断两变量之间是否存在某种关联。【示例】绘制散点图importmatplotlib.pyplotaspltimportnumpyasnp#画散点图x=np.linspace(0,10,100)#生成0到10中100个等差数#plt.scatter(x,np.sin(x))plt.plot(x,np.sin(x),'o')plt.show()12345678【示例】使用scatter绘制不同大小不同颜色的散点图importmatplotlib.pyplotaspltimportnumpyasnp#绘制不同大小不同颜色的散点图np.random.seed(0)x=np.random.rand(100)y=np.random.rand(100)colors=np.random.rand(100)size=np.random.rand(100)*1000plt.scatter(x,y,c=colors,s=size,alpha=0.7)plt.show()1234567891011绘制不同种类不同颜色的线作为线性图的替代,可以通过向plot()函数添加格式字符串来显示离散值。可以使用以下格式化字符。以下是颜色的缩写:【示例】不同种类不同颜色的线#不同种类不同颜色的线x=np.linspace(0,10,100)plt.plot(x,x+0,'-g')#实线绿色plt.plot(x,x+1,'--c')#虚线浅蓝色plt.plot(x,x+2,'-.k')#点划线黑色plt.plot(x,x+3,'-r')#实线红色plt.plot(x,x+4,'o')#点默认是蓝色plt.plot(x,x+5,'x')#叉叉默认是蓝色plt.plot(x,x+6,'d')#砖石红色123456789【示例】不同种类不同颜色的线并添加图例#不同种类不同颜色的线并添加图例x=np.linspace(0,10,100)plt.plot(x,x+0,'-g',label='-g')#实线绿色plt.plot(x,x+1,'--c',label='--c')#虚线浅蓝色plt.plot(x,x+2,'-.k',label='-.k')#点划线黑色plt.plot(x,x+3,'-r',label='-r')#实线红色plt.plot(x,x+4,'o',label='o')#点默认是蓝色plt.plot(x,x+5,'x',label='x')#叉叉默认是蓝色plt.plot(x,x+6,'dr',label='dr')#砖石红色#添加图例右下角lowerright左上角upperleft边框透明度阴影边框宽度plt.legend(loc='lowerright',fancybox=True,framealpha=1,shadow=True,borderpad=1)1234567891011importmatplotlib.pyplotaspltimportnumpyasnp#准备数据x=np.linspace(0,10,50)plt.plot(x,x+0,'--',label='--')plt.plot(x,x+1,':g',label=':g')plt.plot(x,x+2,'vb',label='vb')plt.plot(x,x+3,'sy',label='sy')plt.plot(x,x+4,'hr',label='hr')#添加图例#plt.legend(loc='lowerright')plt.legend(loc=4,fancybox=True,framealpha=1,shadow=True,borderpad=1)#要配合label去使用plt.show()1234567891011121314156绘制条形图(柱状)条形图是用宽度相同的条形的高度或长短来表示数据多少的图形。条形图可以横置或纵置,纵置时也称为柱形图。使用bar函数可以绘制条形图。条形图主要用来纵向对比和横向对比的bar(x,y,color,width)函数来生成纵向条形图barh(x,y,color,height)函数来生成条形图x条装显示位置y显示的值color显示的颜色【示例】使用bar绘制柱状图,并设置柱的宽度importmatplotlib.pyplotaspltplt.rcParams['font.sans-serif']=['SimHei']#用来正常显示中文标签#准备数据x=[2020,2025,2030,2035]y=[12000,30000,10000,50000]#调用bar绘制条形图plt.bar(x,y,width=2)#设置xlabel,ylabelplt.xlabel("年份")plt.ylabel("销量")#添加plt.title("4年的销售量")#调用xticks()x_ticks=[f'{i}年'foriinx]plt.xticks(x,x_ticks)plt.show()12345678910111213141516171819注意事项:bar函数的宽度并不是像素宽度。bar函数会根据二维坐标系的尺寸,以及x坐标值的多少,自动确定每一个柱的宽度,而width指定的宽度就是这个标准柱宽度的倍数。该参数值可以是浮点数,如0。5,表示柱的宽度是标准宽度的0。5倍。【示例】barh的使用importmatplotlib.pyplotaspltplt.rcParams['font.sans-serif']=['SimHei']#用来正常显示中文标签#准备数据x=[2020,2025,2030,2035]y=[12000,30000,10000,50000]#设置条的高度plt.barh(x,y,height=2)#xlabelylabe1plt.xlabel('销量')plt.ylabel('年份')plt.title('4年销量')y_ticks=[f'{i}年'foriinx]plt.yticks(x,y_ticks)plt.show()123456789101112131415161718【示例】对部分条形图,使用颜色区分importmatplotlib.pyplotaspltx=range(5)y=[10,-13,14,-20,43]v_bar=plt.bar(x,y,color='lightblue')forbar,heightinzip(v_bar,y):ifheight
|
|