位置: IT常识 - 正文

Python数学建模三剑客之Matplotlib(数学建模python 怎么用)

编辑:rootadmin

推荐整理分享Python数学建模三剑客之Matplotlib(数学建模python 怎么用),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:python数学建模资料,python高数建模,python小白的数学建模课,数学建模 python,python数学建模基础教程,数学建模 python,python高数建模,Python数学建模三剑客,内容如对您有帮助,希望把文章链接给更多的朋友!

三剑客之Matplotlib

matplotlib 是python最著名的绘图库,它提供了一整套和Matlab相似的命令API,十分适合交互式地进行制图。而且也可以方便地将它作为绘图控件,嵌入GUI应用程序中。matplotlib 可以绘制多种形式的图形包括普通的线图,直方图,饼图,散点图以及误差线图等;可以比较方便的定制图形的各种属性比如图线的类型,颜色,粗细,字体的大小等;它能够很好地支持一部分 TeX 排版命令,可以比较美观地显示图形中的数学公式。

更多Matplotlib的相关知识,可以参考这篇文章:《利用Python的Matplotlib库进行数据可视化》

3.1 pylot介绍

Matplotlib 包含了几十个不同的模块, 如 matlab、mathtext、finance、dates 等,而 pylot 则是我们最常用的绘图模块,这也是本文介绍的重点。

3.1.1 中文显示问题的解决方案

有很多方法可以解决此问题,但下面的方法恐怕是最简单的解决方案了(我只在windows平台上测试过,其他平台请看官自测)。如果想了解更多,也可以参考我N年前的一片博文:matplotlib显示中文的解决方案

>>>importmatplotlib.pyplotasplt>>>plt.rcParams['font.sans-serif']=['FangSong']#指定默认字体>>>plt.rcParams['axes.unicode_minus']=False#解决保存图像时'-'显示为方块的问题

3.1.2 绘制最简单的图形

>>>importnumpyasnp>>>importmatplotlib.pyplotasplt>>>x=np.arange(0,2*np.pi,0.01)>>>y=np.sin(x)>>>plt.plot(x,y)>>>plt.show()

3.1.3 设置标题、坐标轴名称、坐标轴范围

如果你在python的shell中运行下面的代码,而shell的默认编码又不是utf-8的话,中文可能仍然会显示为乱码。你可以尝试着把 u’正弦曲线’ 写成 ‘正弦曲线’.decode(‘gbk’)或者’正弦曲线’.decode(‘utf-8’)

>>>importnumpyasnp>>>importmatplotlib.pyplotasplt>>>frompylabimportmpl>>>mpl.rcParams['font.sans-serif']=['FangSong']>>>mpl.rcParams['axes.unicode_minus']=False>>>x=np.arange(0,2*np.pi,0.01)>>>y=np.sin(x)>>>plt.plot(x,y)>>>plt.title(u'正弦曲线',fontdict={'size':20})#设置标题>>>plt.xlabel(u'弧度',fontdict={'size':16})#显示横轴名称>>>plt.ylabel(u'正弦值',fontdict={'size':16})#显示纵轴名称>>>plt.axis([-0.1*np.pi,2.1*np.pi,-1.1,1.1])#设置坐标轴范围>>>plt.axis('equal')#xy轴等比例保持>>>plt.show()

3.1.4 设置点和线的样式、宽度、颜色

plt.plot函数的调用形式如下:

plot(x,y,color='green',linestyle='dashed',linewidth=1,marker='o',markerfacecolor='blue',markersize=6)plot(x,y,c='g',ls='--',lw=1,marker='o',mfc='blue',ms=6)

1、color指定线的颜色,可简写为“c”。颜色的选项为:

·蓝色: ‘b’ (blue)

·绿色: ‘g’ (green)

·红色: ‘r’ (red)

·墨绿: ‘c’ (cyan)

·洋红: ‘m’ (magenta)

·黄色: ‘y’ (yellow)

·黑色: ‘k’ (black)

·白色: ‘w’ (white)

·灰度表示: e.g. 0.75 ([0,1]内任意浮点数)

·RGB表示法: e.g. ‘#2F4F4F’ 或 (0.18, 0.31, 0.31)

1、linestyle指定线型,可简写为“ls”。线型的选项为:

·实线: ‘-’ (solid line)

·虚线: ‘–’ (dashed line)

·虚点线: ‘-.’ (dash-dot line)

·点线: ‘:’ (dotted line)

·无: '‘或’ ‘或’None’

1、linewidth指定线宽,可简写为“lw”。

2、marker描述数据点的形状

·点线: ‘.’

·点线: ‘o’

·加号: '+

·叉号: ‘x’

·上三角: ‘^’

·上三角: ‘v’

1、markerfacecolor指定数据点标记的表面颜色,可 简写为“ mfc”。

2、markersize指定数据点标记的大小,可 简写为“ ms”。

3.1.5 文本标注和图例

Python数学建模三剑客之Matplotlib(数学建模python 怎么用)

我们分别使用不同的线型、颜色来绘制以10、e、2为基的一组幂函数曲线,演示文本标注和图例的使用。

>>>importnumpyasnp>>>importmatplotlib.pyplotasplt>>>frompylabimportmpl>>>mpl.rcParams['font.sans-serif']=['FangSong']>>>mpl.rcParams['axes.unicode_minus']=False>>>x=np.linspace(-4,4,200)>>>f1=np.power(10,x)>>>f2=np.power(np.e,x)>>>f3=np.power(2,x)>>>plt.plot(x,f1,'r',ls='-',linewidth=2,label='$10^x$')>>>plt.plot(x,f2,'b',ls='--',linewidth=2,label='$e^x$')>>>plt.plot(x,f3,'g',ls=':',linewidth=2,label='$2^x$')>>>plt.axis([-4,4,-0.5,8])>>>plt.text(1,7.5,r'$10^x$',fontsize=16)>>>plt.text(2.2,7.5,r'$e^x$',fontsize=16)>>>plt.text(3.2,7.5,r'$2^x$',fontsize=16)>>>plt.title('幂函数曲线',fontsize=16)>>>plt.legend(loc='upperleft')>>>plt.show()

在绘制图例时,loc用于指定图例的位置,可用的选项有:

·best

·upper right

·upper left

·lower left

·lower right

3.2 绘制多轴图

在介绍如何将多幅子图绘制在同一画板的同时,顺便演示如何绘制直线和矩形。我们可以使用subplot函数快速绘制有多个轴的图表。subplot函数的调用形式如下:

subplot(numRows,numCols,plotNum)

subplot将整个绘图区域等分为numRows行 * numCols列个子区域,然后按照从左到右,从上到下的顺序对每个子区域进行编号,左上的子区域的编号为1。如果numRows,numCols和plotNum这三个数都小于10的话,可以把它们缩写为一个整数,例如subplot(323)和subplot(3,2,3)是相同的。subplot在plotNum指定的区域中创建一个轴对象。如果新创建的轴和之前创建的轴重叠的话,之前的轴将被删除。

>>>importmatplotlib.pyplotasplt>>>plt.subplot(221)#两行两列的第1个位置>>>plt.axis([-1,2,-1,2])>>>plt.axhline(y=0.5,color='b')>>>plt.axhline(y=0.5,xmin=0.25,xmax=0.75,color='r')>>>plt.subplot(222)#两行两列的第2个位置>>>plt.axis([-1,2,-1,2])>>>plt.axvline(x=0,ymin=0,linewidth=4,color='r')>>>plt.axvline(x=1.0,ymin=-0.5,ymax=0.5,linewidth=4,color='g')>>>plt.subplot(212)#两行一列的第2个位置>>>plt.axis([-1,2,-1,2])>>>plt.axvspan(1.25,1.55,facecolor='g',alpha=0.5)>>>plt.axhspan(0.25,0.75,facecolor='0.5',alpha=0.5)>>>plt.show()

3.3 常用绘图类型

3.3.1 直方图

用numpy随机生成一个符合正态分布的数据集,统计分段区域内数据的个数。

>>>importnumpyasnp>>>importmatplotlib.pyplotasplt>>>data=np.random.normal(5.0,3.0,1000)>>>plt.hist(data)>>>bins=np.arange(-5,16,1)>>>plt.hist(data,bins)#使用自定义的分段区域>>>plt.show()

3.3.2 散点图

使用plot()绘图时,如果指定样式参数为仅绘制数据点(linestyle=‘None’),那么所绘制的就是一幅散列图。这种方法所绘制的点无法单独指定数据点的颜色和大小,而使用scatter()绘制散列图就可以指定每个点的颜色和大小。

plt.scatter函数的调用形式如下:

scatter(x,y,s=None,c=None,marker=None,cmap=None,norm=None,vmin=None,vmax=None,alpha=None,linewidths=None,verts=None,edgecolors=None,hold=None,data=None,**kwargs)

scatter()的前两个参数是数组,分别指定每个点的X轴和Y轴的坐标。s参数指定点的大 小,值和点的面积成正比,它可以是一个数,指定所有点的大小,也可以是数组,分别对每个点指定大小。c参数指定每个点的颜色,可以是数值或数组。这里使用一维数组为每个点指定了一个数值。通过颜色映射表,每个数值都会与一个颜色相对应。默认的颜色映射表中蓝色与最小值对应,红色与值对应。当c参数是形状为(N,3)或(N,4)的二维数组时,则直接表示每个点的RGB颜色。marker参数设置点的形状,可以是个表示形状的字符串,也可以是表示多边形的两个元素的元组,第一个元素表示多边形的边数,第二个元素表示多边形的样式,取值范围为0、1、2、3。0表示多边形,1表示星形,2表示放射形,3表示忽略边数而显示为圆形。alpha参数设置点的透明度。facecolors参数为“none”时,表示散列点没有填充色。

>>>importnumpyasnp>>>importmatplotlib.pyplotasplt>>>x=np.random.rand(50)>>>y=np.random.rand(50)>>>area=np.pi*(15*np.random.rand(50))**2>>>color=2*np.pi*np.random.rand(50)>>>plt.scatter(x,y,s=area,c=color,alpha=0.5,cmap=plt.cm.hsv)>>>plt.show()

3.3.3 梯形图、柱状图、填充图

>>>importnumpyasnp>>>importmatplotlib.pyplotasplt>>>n=np.array([0,1,2,3,4,5])>>>x=np.linspace(-0.75,1.,100)>>>plt.subplot(131)>>>plt.step(n,n**2,lw=2)>>>plt.subplot(132)>>>plt.bar(n,n**2,align="center",width=0.5,alpha=0.5)>>>plt.subplot(133)>>>plt.fill_between(x,x**2,x**3,color="green",alpha=0.5)>>>plt.show()

3.3.4 对数坐标

plot()所绘制图表的X-Y轴坐标都是算术坐标。绘制对数坐标图的函数有三个:semilogx()、semilogy()和loglog(),它们分别绘制X轴为对数坐标、Y轴为对数坐标以及两个轴都为对数坐标时的图表。

>>>importnumpyasnp>>>importmatplotlib.pyplotasplt>>>x=np.linspace(0,3,100)>>>y=np.power(2,np.power(2,x))>>>plt.subplot(121)>>>plt.semilogy(x,y,'-r')>>>plt.subplot(122)>>>plt.plot(x,y,'--g')>>>plt.show()

3.3.5极坐标绘图

极坐标系是和笛卡尔(X-Y)坐标系完全不同的坐标系,极坐标系中的点由一个夹角和一段相对中心点的距离来表示。polar(theta, r, **kwargs)可以直接创建极坐标子图并在其中绘制曲线。也可以使用程序中调用subplot()创建子图时通过设 polar参数为True,创建一个极坐标子图,然后调用plot()在极坐标子图中绘图。

>>>importnumpyasnp>>>importmatplotlib.pyplotasplt>>>theta=np.arange(0,2*np.pi,0.02)>>>plt.polar(theta,1.4*np.cos(5*theta),"--",linewidth=2)>>>plt.polar(theta,1.8*np.cos(4*theta),linewidth=2)>>>plt.rgrids(np.arange(0.5,2,0.5),angle=45)>>>plt.thetagrids([0,45])thetagridlabelobjects>)>>>plt.show()>>>

3.4 2D绘图

3.4.1 等值线图

所谓等值线,是指由函数值相等的各点连成的平滑曲线。等值线可以直观地表示二元函数值的变化趋势,例如等值线密集的地方表示函数值在此处的变化较大。matplotlib中可以使用contour()和contourf()描绘等值线,它们的区别是:contourf()所得到的是带填充效果的等值线。

>>>importnumpyasnp>>>importmatplotlib.pyplotasplt>>>y,x=np.ogrid[-2:2:200j,-3:3:300j]>>>z=x*np.exp(-x**2-y**2)>>>extent=[np.min(x),np.max(x),np.min(y),np.max(y)]>>>plt.subplot(121)>>>cs=plt.contour(z,10,extent=extent)>>>plt.clabel(cs)<alistof8text.Textobjects>>>>plt.subplot(122)>>>plt.contourf(x.reshape(-1),y.reshape(-1),z,20)>>>plt.show()

为了更淸楚地区分X轴和Y轴,这里让它们的取值范围和等分次数均不相同.这样得 到的数组z的形状为(200, 300),它的第0轴对应Y轴、第1轴对应X轴。

调用contour()绘制数组z的等值线图,第二个参数为10,表示将整个函数的取值范围等分为10个区间,即显示的等值线图中将有9条等值线。可以使用extent参数指定等值线图的X轴和Y轴的数据范围。

contour()所返回的是一个QuadContourSet对象, 将它传递给clabel(),为其中的等值线标上对应的值。

调用contourf(),绘制将取值范围等分为20份、带填充效果的等值线图。这里演示了另外一种设置X、Y轴取值范围的方法,它的前两个参数分别是计算数组z时所使用的X轴和Y轴上的取样点,这两个数组必须是一维的。

3.4.2 二维数据的平面色彩显示

>>>importnumpyasnp>>>importmatplotlib.pyplotasplt>>>data=np.clip(np.random.randn(5,5),-1,1)>>>plt.subplot(221)>>>plt.imshow(data)>>>plt.subplot(222)>>>plt.imshow(data,cmap=plt.cm.cool)>>>plt.subplot(223)>>>plt.imshow(data,cmap=plt.cm.hot)>>>plt.colorbar()>>>plt.subplot(224)>>>im=plt.imshow(data,cmap=plt.cm.winter)>>>plt.colorbar(im,cmap=plt.cm.winter,ticks=[-1,0,1])>>>plt.show()

3.5 3D绘图

虽然matplotlib主要专注于绘图,并且主要是二维的图形,但是它也有一些不同的扩展,能让我们在地理图上绘图,让我们把Excel和3D图表结合起来。在matplotlib的世界里,这些扩展叫做工具包(toolkits)。工具包是一些关注在某个话题(如3D绘图)的特定函数的集合。

比较流行的工具包有Basemap、GTK 工具、Excel工具、Natgrid、AxesGrid和mplot3d。

mpl_toolkits.mplot3工具包提供了一些基本的3D绘图功能,其支持的图表类型包括散点图(scatter)、曲面图(surf)、线图(line)和网格图(mesh)。虽然mplot3d不是一个最好的3D图形绘制库,但是它是伴随着matplotlib产生的,因此我们对其接口已经很熟悉了。

下面是一个使用plot_surface绘制3d曲面图的例子。

>>>importnumpyasnp>>>importmatplotlib.pyplotasplt>>>importmpl_toolkits.mplot3d>>>x,y=np.mgrid[-2:2:50j,-2:2:50j]>>>z=x*np.exp(-x**2-y**2)>>>ax=plt.subplot(111,projection='3d')>>>ax.plot_surface(x,y,z,rstride=2,cstride=1,cmap=plt.cm.coolwarm,alpha=0.8)>>>ax.set_xlabel('x')>>>ax.set_ylabel('y')>>>ax.set_zlabel('z')>>>plt.show()

python学习网,免费的在线学习python平台,欢迎关注!

相关推荐:

1、Python数学建模三剑客之Numpy

本文链接地址:https://www.jiuchutong.com/zhishi/303274.html 转载请保留说明!

上一篇:zepp life(原小米运动)刷步数脚本(zarchiver 小米)

下一篇:python九宫格图片的原理(python简单九宫格拼图游戏)

  • iqoo8pro充电是多少瓦(iqoo8por充电速度)

    iqoo8pro充电是多少瓦(iqoo8por充电速度)

  • 好友删了对方还能看到吗(好友删了对方还能查看我回复发的朋友动态码吗)

    好友删了对方还能看到吗(好友删了对方还能查看我回复发的朋友动态码吗)

  • 恢复出厂后电池健康涨了(恢复出厂设置后电池不耐用)

    恢复出厂后电池健康涨了(恢复出厂设置后电池不耐用)

  • 美图秀秀照片边框怎么弄(美图秀秀边缘)

    美图秀秀照片边框怎么弄(美图秀秀边缘)

  • 小米cc9pro能超过p30pro吗(小米cc9pro最高支持多少w快充)

    小米cc9pro能超过p30pro吗(小米cc9pro最高支持多少w快充)

  • 公众账号管理员身份怎样解除?(公众账号管理员身份怎样解除)

    公众账号管理员身份怎样解除?(公众账号管理员身份怎样解除)

  • 华为nova7se怎么调24小时(华为nova7se怎么看电池寿命)

    华为nova7se怎么调24小时(华为nova7se怎么看电池寿命)

  • iphone6有深色模式吗(ios6深色模式)

    iphone6有深色模式吗(ios6深色模式)

  • 华为一年保修包括什么(华为一年保修收费吗)

    华为一年保修包括什么(华为一年保修收费吗)

  • oppopckm00是什么手机型号(oppopckm80是什么手机)

    oppopckm00是什么手机型号(oppopckm80是什么手机)

  • qq课堂有上课记录吗(qq课堂上课记录查看不了)

    qq课堂有上课记录吗(qq课堂上课记录查看不了)

  • 微信被设置仅聊天(微信被设置仅聊天怎么破解)

    微信被设置仅聊天(微信被设置仅聊天怎么破解)

  • 双面屏手机是哪款(双面屏手机是哪个品牌)

    双面屏手机是哪款(双面屏手机是哪个品牌)

  • 苹果x多长时间充满电(苹果x多长时间换屏一次)

    苹果x多长时间充满电(苹果x多长时间换屏一次)

  • oppoa11处理器是多少(oppoa11处理器是骁龙多少)

    oppoa11处理器是多少(oppoa11处理器是骁龙多少)

  • iphonex上市时间(iphoneXr上市时间和价格)

    iphonex上市时间(iphoneXr上市时间和价格)

  • vivo怎么把软件移到sd卡(vivo怎么把软件移到另一个手机上)

    vivo怎么把软件移到sd卡(vivo怎么把软件移到另一个手机上)

  • 高逾数丈的意思是什么(高逾数丈的读音)

    高逾数丈的意思是什么(高逾数丈的读音)

  • 华为软件哪些可以卸载(华为软件哪些可以删除)

    华为软件哪些可以卸载(华为软件哪些可以删除)

  • 怎么复制抖音视频(怎么复制抖音视频到微信朋友)

    怎么复制抖音视频(怎么复制抖音视频到微信朋友)

  • 4g变h怎么恢复正常(4g变h怎么恢复正常vivo)

    4g变h怎么恢复正常(4g变h怎么恢复正常vivo)

  • 苹果1x信号是什么意思(苹果1x信号什么意思)

    苹果1x信号是什么意思(苹果1x信号什么意思)

  • 系统提示打印机错误(打印机疑难解答显示打印机问题)

    系统提示打印机错误(打印机疑难解答显示打印机问题)

  • Chrome谷歌浏览器强制刷新页面(不使用缓存)(Chrome谷歌浏览器网页)

    Chrome谷歌浏览器强制刷新页面(不使用缓存)(Chrome谷歌浏览器网页)

  • HTML学生个人网站作业设计:个人主页博客web网页设计制作 (HTML+CSS) (1)(学生个人网页制作html5)

    HTML学生个人网站作业设计:个人主页博客web网页设计制作 (HTML+CSS) (1)(学生个人网页制作html5)

  • phpcms怎么新建栏目(phpcms建站教程)

    phpcms怎么新建栏目(phpcms建站教程)

  • 销售收入不含税怎么计算增值税额
  • 增量留抵税额会计处理
  • 收到失业金返还什么意思
  • 小企业一定要买五险吗
  • 供电车间工人薪酬计入什么科目
  • 废品销售是否缴纳增值税
  • 如何查看增值税申报表
  • 退回多报的教育费附加如何做账
  • 职工差旅费现金流出属于
  • 专用发票抵扣联放在凭证中吗
  • 所得税预缴申报表中营业成本怎么计算
  • 银行支付结算工作内容
  • 商业折扣和现金折扣的区别
  • 免抵退税额抵减额和不得免征和抵扣税额是一个意思吗
  • 广告设计制作的技术框架
  • 进口设备不需要交关税吗
  • 小规模企业房产税怎么算
  • 外币应收账款汇兑损失计入
  • 商品进销差价如何结平
  • 物业公司减免物业费怎样开票
  • 转销和冲销是什么意思
  • 兼职劳务费个税怎么算
  • 长期待摊费用多少钱
  • 政府补助专款专用如何入账
  • 其他业务成本如何核算
  • 刷卡机怎么收费的吗
  • php的字符串函数
  • 期间费用包含哪些
  • lsm.exe是什么程序
  • 微信公众平台开发
  • 在缴纳企业所得税的情形
  • symfony框架的特点
  • 广告代理费制度
  • transformer中的参数
  • 最详细、最完整的相机标定讲解
  • 没有发票的支出可以扣除企业所得税么
  • db2diag命令
  • 建筑业的账务处理方法
  • 培训费发票是否含税
  • DedeCMS V5.7 SP2前台文件上传漏洞
  • 固定资产处理的税务政策
  • 电子商务公司怎么做账比较合适
  • 普票 销项
  • 个体升一般纳税人的界限
  • 残疾人保障金汇算清缴的处理
  • 股东捐赠资产要纳税吗
  • 电子承兑背书了能撤回吗
  • 所得税需要转本吗
  • 微信支付的账务在哪里
  • 股东打到公帐上怎么做账
  • 费用化是计入当期损益吗
  • 递延收益影响当期所得税吗为什么
  • 收到实收资本会计摘要
  • mysql导出语句
  • 微软数据收集
  • 重庆四日游最佳攻略超详细
  • 查看电伊
  • win7玩游戏卡吗
  • 没有光驱有什么影响
  • 如何把windowsxp换成windows7
  • OS X 10.10 Yosemite的新特性与iOS联系更紧密
  • rds是啥
  • win7系统怎样
  • windows8.1 preview
  • 物联网1.0 2.0 3.0
  • 家庭普通版win7
  • 如何把网址设为常用网址
  • win7共享文件夹设置访问权限
  • unity www读取本地视频文件和外部视频文件 播放视频动画和视频声音
  • vue全家桶包含哪些
  • Node.js中的事件循环是什么
  • jquery validate表单校验html
  • unity3d入门视频教程
  • 全国退休人员有几多人
  • 重新税务登记程序有哪些
  • 企业吸收合并都包括什么
  • 山东增值税普通发票查询
  • 税务风险管理指引
  • 福建生育津贴要交满几个月
  • 亿企代账和云账房哪个好用?
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设