(1) np.mashgrid()函数:-----生成网络点坐标矩阵,可以是二维网络矩阵,也可以是三维网络矩阵。其中,每个交叉点就是网络点,描述这些网络点的矩阵就是坐标矩阵(横坐标矩阵X中的每个元素与纵坐标矩阵Y中对应位置元素,共同构成一个点的完整坐标)。

背景示例:网络点与坐标矩阵的解释如下:

import numpy as np

import matplotlib.pyplot as plt

x=np.array([[0,1,2],[0,1,2]])        #最简单的方法是,可以把横纵坐标矩阵X,Y写出来,生成坐标点

y=np.array([[0,0,0],[1,1,1]])

plt.plot(x,y,color='red',marker='.',markersize=10,linestyle='-.')      #点的形状为原点,点设置大一些,线性为电划线。

plt.grid(True)

plt.show()

注意:按照矩阵给坐标点信息,matplotlib会把横坐标矩阵中,每一列的点当做同一条线。正如上例中把plot的linestyle=’ ‘改为linestyle=’-.’就会发现A-D,B-E,C-F是连接的。

对于很多网络点的情况,可用如下meshgrid()函数方法:

因注意到坐标矩阵其中有大量的重复---X的每一行都一样,Y的每一列都一样。故基于此规律性,numpy提供的np.meshgrid()函数可以快速生成坐标矩阵X,Y

x=np.linspace(-0.5,2.,10)

y=np.linspace(-1.5,4.,10)

X,Y=np.meshgrid(x,y)     #输入的x,y是网络点的横纵坐标列向量(非矩阵),输出的X,Y就是坐标矩阵。

plt.plot(X,Y,color='limegreen',marker='.',linestyle='')

plt.grid(True)

plt.show()

(2) Python可视化库matplotlib.pyplot里contour()与contourf()函数

区别:contour()和counterf()函数功能相同,都是画三维等高线图的,不同点在于contourf会根据不同的水平值用不同的颜色来填充绘图(即会对等高线间的区域进行填充)。

contour()和counterf()都是绘制三维图,其中前两个参数x和y为两个等长一维数组,第三个参数z为二维数组(表示平面点xi和yi映射的函数值)。

matplotlib等高线的绘制步骤:

等高线是三维图像在二维空间的投影

l 首先准备三维函数及待投影平面的网格坐标。

import numpy as np

import matplotlib.pyplot as plt

def height(x,y):

return (1-x/2+x**5+y**3)*np.exp(-x**2-y**2)

x=np.linspace(-3,3,300)

y=np.linspace(-3,3,300)

X,Y=np.meshgrid(x,y)

l 绘制等高线

C=plt.contour(X,Y,height(X,Y),10,colors='black')   # 10代表等高线的密集程度。如果是0,则图像被一分为二

plt.contourf(X,Y,height(X,Y),10,alpha=0.75,cmap=plt.cm.hot)

#为等高线填充颜色 10表示按照高度分成10层alpha表示透明度cmap表示渐变标准

l 添加高度与数字

plt.clabel(C,inline=True,fontsize=10)     #inline=True表示高度写在等高线上

plt.xticks(())

plt.yticks(())

#去掉坐标轴刻度

plt.show()

#显示图片

l 最后结果图为:

实例:寻找某一函数的最小值

import numpy as np

import matplotlib.pyplot as plt

import scipy.optimize as so

rosenbrockfunction=lambda x,y: (1-x)**2+100*(y-x**2)**2  #使用lambda关键字所表示的匿名函数来使代码变得更加简洁

x=np.linspace(-.5,2.,100)

y=np.linspace(-1.5,4.,100)

X,Y=np.meshgrid(x,y)

Z=rosenbrockfunction(X,Y)

cs=plt.contour(X,Y,Z,np.logspace(0,3.5,7,base=10),cmap='gray')   #以第四个参数给出的值为标准来绘制等高线并用gray颜色绘图

#plt.contourf(X,Y,Z,10,alpha=0.75,cmap='gray')

rosen=lambda x:rosenbrockfunction(x[0],x[1])

solution,iterates=so.fmin_powell(rosen,x0=np.array([0,-0.7]),retall=True)

#迭代方法so.fmin_powell利用鲍威尔方法来寻找最小值(由一个给定的起始值x0开始,并且当给出选项retall=True时报告所有的迭代,经过16次迭代后得出x=0,y=0)

x,y=zip(*iterates)

plt.plot(x,y,'ko')

plt.plot(x,y,'k:',linewidth=1)

plt.title('Steps of powells method to compute a minimum')

plt.clabel(cs)

#clabel使用该contour创建的一个等值线集对象来注释对应函数值的水平值

补充:np.logspace()常用于创建等比数列,它也有常用的3个参数,第一个参数表示起始点的指数,第二个参数终止点的指数,第三个参数表示数列的个数;最后,通过base参数可以修改底数;

(4) 图像

Imshow()函数:用于在指定的窗口中显示一幅图像。它负责对图像进行处理,并显示其格式,但是不显示图片,其后跟着plt.show()才能显示出来。

imshow图像显示函数:imshow(f,G) 其中,f是函数,G是显示该图像的灰度级数。

Imshow(f,[low,high]) 小于或者等于low的值都显示为黑色,大于或等于high的值都显示为白色

Imshow(f,[ ]) [ ] 自动将low设为函数最小值,将high设为函数最大值。

Colorbar:增加颜色类标的代码是plt.colorbar()

例如:import numpy as np

import matplotlib.pyplot as plt

X=np.array([[1,2],[3,4],[5,6]])

plt.imshow(X)

plt.colorbar()

plt.show()

实例:将数组可视化为图像,

import numpy as np

import matplotlib.pyplot as plt

# 下面代码演示了如何通过meshgrid生成复数参数值的矩阵:

def mandelbrot(h,w,maxit=20):

X,Y=np.meshgrid(np.linspace(-2,0.8,w),np.linspace(-1.4,1.4,h))

c=X+Y*1j

z=c

exceeds=np.zeros(z.shape,dtype=bool)

for iteration in range(maxit):

z=z**2+c

exceeded=np.abs(z) > 4

exceeds_now=exceeded & (np.logical_not(exceeds))

exceeds[exceeds_now] = True

z[exceeded]=2

return (exceeds)

#命令imshow将矩阵展示为图像,所选的颜色贴图显示了序列出现的白色无界的区域,而其他区域显示为黑色。

plt.imshow(mandelbrot(400,400),cmap='gray')

plt.axis('off')    #使用plt.axis('off')关闭坐标轴

plt.show()

# 使用imshow的无插值的图像

注意:imshow命令默认使用插值使图像看起来更好,这在矩阵较小时可以看的很清楚。

plt.imshow(mandelbrot(400,400),interpolation='nearest',cmap='gray')

Interpolation代表插值运算,nearest表示最近邻近插值法,只是插值方式中的一种。

cmap表示绘图时的样式,这里选择的是ocean主题。

#使用最近邻近插值法所得的图像

python画图中grid等于true_Python3.0科学计算学习之绘图(二)相关推荐

  1. python画指数函数图像_Python3.0科学计算学习之绘图(一

    基本绘图: (1)  plot是标准的绘图库,调用函数plot(x,y)就可以创建一个带有绘图的图形窗口(其中y是x的函数).输入的参数为具有相同长度的数组(或列表):或者plot(y)是plot(r ...

  2. python绘制对数坐标图描点_Python3.0科学计算学习之绘图(一)

    基本绘图: (1)  plot是标准的绘图库,调用函数plot(x,y)就可以创建一个带有绘图的图形窗口(其中y是x的函数).输入的参数为具有相同长度的数组(或列表):或者plot(y)是plot(r ...

  3. python科学坐标图绘制的四个要素_Python3.0科学计算学习之绘图(四)

    绘制三维图: mplot3d工具包提供了点.线.等值线.曲面和所有其他基本组件以及三维旋转缩放的三维绘图. 1.散点的三维数据图 from mpl_toolkits.mplot3d import ax ...

  4. python画图中grid等于true_Python中的matplotlib画图总结

    # -*- coding: utf-8 -*- import matplotlib.pyplot as plt from numpy.random import randn import numpy ...

  5. python画图中grid等于true_python – 散布在GridPlot中覆盖多个绘图对象

    假设我有一个包含一些数据的类,并实现了一个返回散景图的函数 import bokeh.plotting as bk class Data(): def plot(self,**kwargs): # d ...

  6. python segy格式地震数据读写包segyio学习笔记(二)

    python segy格式地震数据读写包segyio学习笔记(二) 最近大致搞明白了segyio读取叠后和叠前segy数据的方法,以及内部存储结构,以两段代码为例: 叠后数据读取.这是一个从给定时窗内 ...

  7. ET6.0服务器框架学习笔记(二、一条登录协议)

    ET6.0服务器框架学习笔记(二.一条登录协议) 上一篇主要记录ET6.0的服务器启动功能,本篇主要记录ET6.0完整的一条协议,从配置到生成协议数据,到从客户端发送给服务端,再发送回客户端的流程 文 ...

  8. scipy是python下的什么_Python下科学计算包numpy和SciPy的安装

    Python下大多数工具包的安装都很简单,只需要执行 "python setup.py install"命令即可.然而,由于SciPy和numpy这两个科学计算包的依赖关系较多,安 ...

  9. Python科学计算学习:从入门到放弃系列(3)工具篇 IPython (Jupiter Notebook) 使用介绍

    1.前言 兵欲善其事,必先利其器. 发现这句话真的好有道理,我是按着张若愚的教材学Python科学计算的,他整本书,对,整本书,均是用IPython写的,也就是,编码演示和书籍撰写两不误.在这之前,我 ...

最新文章

  1. 某单位招聘考试需要考核数学英语计算机,2010年10月自学考试电子商务网站设计原理试题...
  2. 接口入参形式_极光小课堂|手把手教你做接口测试
  3. 简谈WP,IOS,Android智能手机OS
  4. 2.7 HBase架构深入剖析
  5. C#中string a=null和string b=区别
  6. Java:异常处理的一些注意事项
  7. HDU - 5573 Binary Tree(思维+构造+二进制)
  8. g++ linux 编译开栈_linux gcc和g++版本的修改
  9. android在activity之间传递map类型值
  10. 精选| 2019年2月R新包推荐
  11. Jenkinsfile脚本实现master、slave节点(agent)共享内容
  12. win10自带的打印机服务器,win10系统开启打印机服务的操作方法
  13. 脑电EEG代码开源分享 【2.预处理-静息态篇】
  14. 对象存储BOS服务介绍
  15. 判断某整数是正整数、负整数还是零
  16. 水果店水果保鲜期延长方法,水果店经营保鲜方法
  17. iOS高德地图去logo
  18. 国际商务英语学习[十八]
  19. oracle utl_http.request,通过ORACLE的UTL_HTTP工具包发送包含POST参数的请求
  20. 《指定一个用户只能在特定的时间里不能登陆》『罗斌原创』

热门文章

  1. Loadrunner基础:Loadrunner Vuser基本概念和应用
  2. Go协程通道锁故事化理解
  3. PHP学级与年级的转换函数_PHP addslashes()和stripslashes():字符串转义与还原
  4. 我的文档目录环境变量_从.env文件中为NodeJS加载环境变量
  5. linux usb 触摸屏驱动,请教大家一个linux下的usb触摸屏驱动的问题
  6. mac java sh_怎么在Mac上下载java?
  7. stm8s003程序跑飞_微信小程序只玩跳一跳?OUT啦!带你玩更好玩的微信小游戏!...
  8. springboot整合shiro+mybatis-plus
  9. .php on line 0,启动禅道项目管理软件时,报PHP Warning: PHP Startup: in Unknown on line 0解决方法...
  10. java虚拟键盘_web虚拟键盘VirtualKeyboard