使用python实现三维图可视化
作者:自然卷卷、 发布时间:2021-07-31 02:28:57
这是学习tensorflow框架中遇到的知识,这里定义函数的时候选用的是将x和y封装起来,方便tensorflow求导。
要慢慢习惯这种写法
import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
def himmelblau(x):
return (x[0]**2 + x[1] - 11)**2 + (x[0] + x[1]**2 - 7)**2
x = np.linspace(-6, 6, 200)
y = np.linspace(-6, 6, 200)
X, Y = np.meshgrid(x, y)
fig = plt.figure(figsize=(12, 10))
ax = fig.gca(projection='3d')
ax.plot_surface(X, Y, Z) # 画曲面
# ax.plot(X, Y, Z) # 画曲线,好像x, y得是一维的
ax.view_init(60, -30) # 好像是调成图的角度
ax.set_xlabel('X')
ax.set_ylabel('Y')
plt.show()
补充:python3安装mayavi,实现3d动态可视化操作
如下代码呢,是在网上找的,搜索关键词“python 3d 动态可视化”,从找到代码到真正执行成功,问题及解决方法记录一下。
环境win8 64位,python3.6
import numpy as np
from mayavi import mlab
x, y = np.ogrid[-2:2:160j, -2:2:160j]
z = abs(x) * np.exp(-x ** 2 - (y / .75) ** 2)
pl = mlab.surf(x, y, z, warp_scale=2)
mlab.axes(xlabel='x', ylabel='y', zlabel='z')
mlab.outline(pl)
mlab.show()
问题:
虽然有文章已经指出安装mayavi时安装顺序为PyQt4-->Traits-->VTK-->Mayavi,但是并不知道原因,所以还是直接安装了mayavi,出现如下报错信息:
Microsoft Visual C++ 14.0 is required
原因:
缺少依赖包
解决:
根据文章所说,在https://www.lfd.uci.edu/~gohlke/pythonlibs/中查找到mayavi的相关依赖,
1、VTK通过pip install VTK安装
2.PyQt4无法通过pip install PyQt4安装,所以需要下载到Python安装目录的Script下(环境为python3.6,64位win),通过命令pip install PyQt4-4.11.4-cp36-cp36m-win_amd64.whl:
3、Traits并不是作为mayavi的依赖包,而是属于ETS的一部分,同样通过下载文件,pip install traits-4.6.0-cp36-cp36m-win_amd64.whl安装
4、mayavi安装,同样通过下载文件,pip install mayavi-4.6.0+vtk81-cp36-cp36m-win_amd64.whl安装
注:PyQt4、Traits、mayavi也不是不能通过pip install直接从网上下载安装,应该还是缺少相关的依赖,这里只保证通过文件安装不出错。
问题:
运行代码时报错:ImportError: numpy.core.multiarray failed to import
原因:
由于mayavi相关的包安装的是最新的版本,需要更新numpy
解决:
pip install --upgrade numpy
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。如有错误或未考虑完全的地方,望不吝赐教。
来源:https://blog.csdn.net/weixin_44778883/article/details/102820301
猜你喜欢
- 函数getcache,会自动建立需要的缓存。 代码如下:Function getcache(funsname,isreset,is
- 从技术上来说,在ASP环境中,读入并管理XML文本的主要方法有三种: 创建MSXML对象,并且将XML文档载入DOM; 使用服务器端嵌入(S
- 上传问题可以说是网络编程中经常遇到的,也是一个很重要的问题,我们不仅要实现上传文件,图片等基本功能,还有考虑到上传程序的安全性,本文介绍了一
- 从MySQL 5.0.2开始,通过mysql_stmt_attr_set() C API函数实现了服务器端光标。服务器端光标允许在服务器端生
- 安装完 Oracle11g 之后,想打开自带的 SQL Plus 来学习,然后按照提示用 sys 用户来连接数据库,可输了好几次都提示一个错
- 遇到一个难题,在无物理键盘情况下,通过页面软键盘在页面文本框输入汉字,不知道51js的各位大牛有没有遇到过这种需求,如果遇到过是如何解决的,
- 减少HTTP请求,是可以提高网站速度的,把所有的背景图像都放到一个图片文件中,然后通过CSS的background-image和backgr
- 最近在着手支付宝个人版改版的项目,正好在一些国内知名的SNS网站上分别注册了帐户进行体验。显然一点,国内的SNS都带有Facebook的影子
- 一个已知管用的方法是,使用session_set_save_handler,接管所有的session管理工作,一般是把session信息存储
- 在Web标准中的页面布局是使用Div配合CSS来实现的。这其中最常用到的就是使整个页面水平居中的效果,这是在页面布局中基本,也是最应该首先掌
- 1、灵活运用样式 熟悉网页设计的网友就知道,调用Style的方法很多,我们可以单击鼠标右键选择Custon Style来调用Style标准,
- WebSocket 是什么?摘抄网上的一些解释:WebSocket 协议是基于 TCP 的一种新的网络协议。它实现了浏览器与服务器全双工(f
- 据了解绝大多数开发人员对于索引的理解都是一知半解,局限于大多数日常工作没有机会、也什么没有必要去关心、了解索引,实在哪天某个查询太慢了找到查
- 介绍目前它是Python数值计算中最为重要的基础包,将numpy的数组的对象作为数据交互的通用语,一般我们要充分理解好矩阵计算的原理,这需要
- 如果不用类库(如jquery)来写,往往很多时候,都需要通过id或tag来获取html里的某一对象,然后对其进行操作。为了节省代码,把常用的
- 一个简单的for语句就能循环字典的所有键,就像处理序列一样:In [1]: d = {'x':1, 'y':
- 1、页签的表达。页签表达很清晰,当前页签突出,且层级包涵关系明确;看下图,一目了然的感觉,不用疑惑我在那部分里。不信?拿当当的对比一下,你感
- MYSQL数据库以它短小、方便、速度快、免费等优点成为很多网站目前首选数据库,但一般都是用PHP+MYSQL相结合来开发各种动态页面,其实A
- 一、前言 JDK(Java Development Kit )是一切java应用程序的基础,可以说,所有的java应用程序是构建
- ps:大多与c等编程语言极为相似一、if分支if:给定一个条件,同时为该条件设置多种(一般两种)情况,然后通过条件判断来实现具体的执行段复合