Python3.0科学计算学习之绘图(二)

论坛 期权论坛     
选择匿名的用户   2021-5-22 15:20   53   0
<div class="blogpost-body" id="cnblogs_post_body">
<p><span style="font-size:16px;"><strong>(1) np.mashgrid()<span style="font-family:&#39;宋体&#39;;">函数:</span></strong></span><span style="font-family:Calibri;">-----</span><span style="font-family:&#39;宋体&#39;;">生成网络点坐标矩阵,可以是二维网络矩阵,也可以是三维网络矩阵。其中,每个交叉点就是</span><strong>网络点</strong>,描述这些网络点的矩阵就是<strong>坐标矩阵</strong><span style="font-family:&#39;宋体&#39;;">(横坐标矩阵</span>X<span style="font-family:&#39;宋体&#39;;">中的每个元素与纵坐标矩阵</span><span style="font-family:Calibri;">Y</span><span style="font-family:&#39;宋体&#39;;">中对应位置元素,共同构成一个点的完整坐标)。</span></p>
<p>背景示例:网络点与坐标矩阵的解释如下:</p>
<p>import numpy as np</p>
<p>import matplotlib.pyplot as plt</p>
<p>x&#61;np.array([[0,1,2],[0,1,2]])        #<span style="font-family:&#39;宋体&#39;;">最简单的方法是,可以把横纵坐标矩阵</span><span style="font-family:Calibri;">X,Y</span><span style="font-family:&#39;宋体&#39;;">写出来,生成坐标点</span></p>
<p>y&#61;np.array([[0,0,0],[1,1,1]])</p>
<p>plt.plot(x,y,color&#61;&#39;red&#39;,marker&#61;&#39;.&#39;,markersize&#61;10,linestyle&#61;&#39;-.&#39;)      #<span style="font-family:&#39;宋体&#39;;">点的形状为原点,点设置大一些,线性为电划线。</span></p>
<p>plt.grid(True)</p>
<p>plt.show()   </p>
<p><span style="font-family:&#39;宋体&#39;;">注意:按照矩阵给坐标点信息,</span>matplotlib<span style="font-family:&#39;宋体&#39;;">会把横坐标矩阵中,每一列的点当做同一条线。正如上例中把</span><span style="font-family:Calibri;">plot</span><span style="font-family:&#39;宋体&#39;;">的</span><span style="font-family:Calibri;">linestyle&#61;</span>’ ‘<span style="font-family:&#39;宋体&#39;;">改为</span>linestyle&#61;’-.’<span style="font-family:&#39;宋体&#39;;">就会发现</span>A-D,B-E,C-F<span style="font-family:&#39;宋体&#39;;">是连接的。</span></p>
<p><span style="font-family:&#39;宋体&#39;;">                                  <img alt="" src="https://beijingoptbbs.oss-cn-beijing.aliyuncs.com/cs/5606289-fe9832a069dfeae5a358ddd3ef0ce2fe.png"><img alt="" src="https://beijingoptbbs.oss-cn-beijing.aliyuncs.com/cs/5606289-5387e668afc9bde4fe872c9d118bf9b3.png"></span></p>
<p align="justify"><span style="color:#ff0000;font-size:16px;"><strong><span style="font-family:&#39;宋体&#39;;">对于很多网络点的情况,可用如下</span>meshgrid()<span style="font-family:&#39;宋体&#39;;">函数方法:</span></strong></span></p>
<p align="justify">   <span style="font-family:&#39;宋体&#39;;">因注意到坐标矩阵其中有大量的重复</span>---X<span style="font-family:&#39;宋体&#39;;">的每一行都一样,</span><span style="font-family:Calibri;">Y</span><span style="font-family:&#39;宋体&#39;;">的每一列都一样。故基于此规律性,</span><span style="font-family:Calibri;">numpy</span><span style="font-family:&#39;宋体&#39;;">提供的</span><span style="font-family:Calibri;">np.meshgrid()</span><span style="font-family:&#39;宋体&#39;;">函数可以快速生成坐标矩阵</span><span style="font-family:Calibri;">X,Y</span></p>
<p align="justify">x&#61;np.linspace(-0.5,2.,10)    </p>
<p align="justify">y&#61;np.linspace(-1.5,4.,10)</p>
<p align="justify">X,Y&#61;np.meshgrid(x,y)     #<span style="font-family:&#39;宋体&#39;;">输入的</span><span style="font-family:Calibri;">x,y</span><span style="font-family:&#39;宋体&#39;;">是网络点的横纵坐标</span><strong>列向量(非矩阵)</strong><span style="font-family:&#39;宋体&#39;;">,输出的</span>X<span style="font-family:&#39;宋体&#39;;">,</span><span style="font-family:Calibri;">Y</span><span style="font-family:&#39;宋体&#39;;">就是坐标矩阵。</span></p>
<p align="justify">plt.plot(X,Y,color&#61;&#39;limegreen&#39;,marker&#61;&#39;.&#39;,linestyle&#61;&#39;&#39;)</p>
<p align="justify">plt.grid(True)</p>
<p align="justify">plt.show()</p>
<p align="justify">                   <img alt="" src="https://beijingoptbbs.oss-cn-beijing.aliyuncs.com/cs/5606289-b988f30e2be5b47e83f95eae3211996b.png"></p>
<p align="justify"><span style="color:#ff0000;font-size:16px;"><strong>(2) Python<span style="font-family:&#39;宋体&#39;;">可视化库</span><span style="font-family:Calibri;">matplotlib.pyplot</span><span style="font-family:&#39;宋体&#39;;">里</span><span style="font-family:Calibri;">contour()</span><span style="font-family:&#39;宋体&#39;;">与</span><span style="font-family:Calibri;">contourf()</span><span style="font-family:&#39;宋体&#39;;">函数</span></strong></span></p>
<p align="justify"><span style="font-family:&#39;宋体&#39;;"><strong>区别</strong>:</span>contour()<span style="font-family:&#39;宋体&#39;;">和</span><span style="font-family:Calibri;">counterf() </span><span style="font-family:&#39;宋体&#39;;">函数功能相同,都是画三维等高线图的,不同点在于</span><s
分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:3875789
帖子:775174
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP