使用python實(shí)現(xiàn)三維圖可視化
這是學(xué)習(xí)tensorflow框架中遇到的知識,這里定義函數(shù)的時(shí)候選用的是將x和y封裝起來,方便tensorflow求導(dǎo)。
要慢慢習(xí)慣這種寫法import numpy as npimport matplotlib.pyplot as pltfrom mpl_toolkits.mplot3d import Axes3Ddef himmelblau(x):return (x[0]**2 + x[1] - 11)**2 + (x[0] + x[1]**2 - 7)**2x = 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) # 好像是調(diào)成圖的角度ax.set_xlabel(’X’)ax.set_ylabel(’Y’)plt.show()
補(bǔ)充:python3安裝mayavi,實(shí)現(xiàn)3d動態(tài)可視化操作
如下代碼呢,是在網(wǎng)上找的,搜索關(guān)鍵詞“python 3d 動態(tài)可視化”,從找到代碼到真正執(zhí)行成功,問題及解決方法記錄一下。
環(huán)境win8 64位,python3.6
import numpy as npfrom 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()
雖然有文章已經(jīng)指出安裝mayavi時(shí)安裝順序?yàn)镻yQt4-->Traits-->VTK-->Mayavi,但是并不知道原因,所以還是直接安裝了mayavi,出現(xiàn)如下報(bào)錯信息:
Microsoft Visual C++ 14.0 is required
缺少依賴包
解決:根據(jù)文章所說,在https://www.lfd.uci.edu/~gohlke/pythonlibs/中查找到mayavi的相關(guān)依賴,
1、VTK通過pip install VTK安裝
2.PyQt4無法通過pip install PyQt4安裝,所以需要下載到Python安裝目錄的Script下(環(huán)境為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直接從網(wǎng)上下載安裝,應(yīng)該還是缺少相關(guān)的依賴,這里只保證通過文件安裝不出錯。
問題:運(yùn)行代碼時(shí)報(bào)錯:ImportError: numpy.core.multiarray failed to import
由于mayavi相關(guān)的包安裝的是最新的版本,需要更新numpy
解決:pip install --upgrade numpy
以上為個人經(jīng)驗(yàn),希望能給大家一個參考,也希望大家多多支持好吧啦網(wǎng)。如有錯誤或未考慮完全的地方,望不吝賜教。
相關(guān)文章:
1. Python實(shí)現(xiàn)迪杰斯特拉算法過程解析2. 詳解java中static關(guān)鍵詞的作用3. 詳解Python模塊化編程與裝飾器4. PHP擴(kuò)展之字符編碼相關(guān)函數(shù)1——iconv5. Python如何進(jìn)行時(shí)間處理6. 關(guān)于Java下奇怪的Base64詳解7. 基于Android FileProvider 屬性配置詳解及FileProvider多節(jié)點(diǎn)問題8. Java14發(fā)布了,再也不怕NullPointerException了9. python使用ctypes庫調(diào)用DLL動態(tài)鏈接庫10. python裝飾器三種裝飾模式的簡單分析
