• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      Python Plotly極速三維作圖二例

      2022-07-21 11:37:39牟曉東
      電腦報(bào) 2022年27期
      關(guān)鍵詞:賦值繪圖圖表

      牟曉東

      在進(jìn)行開(kāi)源硬件編程時(shí)經(jīng)常要對(duì)獲取到的實(shí)驗(yàn)數(shù)據(jù)進(jìn)行實(shí)時(shí)或后期數(shù)據(jù)可視化分析,一般情況下我們都是在Python編程時(shí)先導(dǎo)入matplotlib模塊或Seaborn模塊,然后使用其中的pyplot、displot等子模塊與命令再結(jié)合numpy和pandas進(jìn)行各種圖表的繪制。類(lèi)似于matplotlib的底層可視化庫(kù)雖然圖表資源豐富且可定制性較強(qiáng),但作為靜態(tài)的繪圖模塊,matplotlib的書(shū)寫(xiě)代碼量較大,操作稍顯繁瑣,此時(shí)建議大家可嘗試一下能夠同時(shí)支持二維和三維作圖的Plotly,它是基于JavaScript的動(dòng)態(tài)繪圖模塊,能夠通過(guò)簡(jiǎn)單的幾行代碼就繪制出非常漂亮的圖表,便于與他人進(jìn)行共享,在此以繪制三維的點(diǎn)與線(xiàn)和函數(shù)的三維面為例進(jìn)行展示:

      首先,運(yùn)行Jupyter Notebook (anaconda3),導(dǎo)入相關(guān)的模塊:“import? plotly.graph_objects as go”“import pandas as pd”;接著,通過(guò)“data = pd.read_csv('data/3d-points.csv')”對(duì)準(zhǔn)備好的csv數(shù)據(jù)文件進(jìn)行讀取加載,再通過(guò)“data.head()”進(jìn)行前五行數(shù)據(jù)的顯示——該csv文件中的數(shù)據(jù)只有X、Y和Z三列,每一行的三個(gè)數(shù)據(jù)即對(duì)應(yīng)一個(gè)三維坐標(biāo)點(diǎn),如(1,1,1)、(4,2,1)等,共300個(gè)點(diǎn);然后建立變量line,為其賦值為“go.Scatter3d(x= data['X'],y=data['Y'],z=data['Z'])”,將參數(shù)中的三維坐標(biāo)點(diǎn)與data中讀取csv文件中的各個(gè)三維坐標(biāo)點(diǎn)進(jìn)行對(duì)應(yīng);再建立變量fig,賦值為“go.Figure(line)”,最后通過(guò)“fig.show()”進(jìn)行繪圖輸出。

      點(diǎn)擊“運(yùn)行”按鈕后就會(huì)看到生成了三維的點(diǎn)與線(xiàn)圖(如圖1),此時(shí)可通過(guò)鼠標(biāo)的左右上下拖動(dòng)對(duì)圖進(jìn)行各個(gè)角度的動(dòng)態(tài)展示,也可以推拉滾輪來(lái)縮放。同時(shí),在圖的右上方區(qū)域還提供了一系列小工具,實(shí)現(xiàn)圖片的保存、縮放與移動(dòng)等功能。

      如果要繪制三維面的話(huà),比如想看一下某個(gè)函數(shù)在三維空間中“長(zhǎng)”什么樣子,可以先構(gòu)造出每個(gè)二維坐標(biāo)面中的均勻“點(diǎn)陣”,再將對(duì)應(yīng)的高度值進(jìn)行疊加即可。以函數(shù)“z=x的平方加y的平方”為例,仍然是在Jupyter中先導(dǎo)入模塊:“import? plotly.graph_objects as go”、“import numpy as np”;接著建立x和y兩個(gè)變量,分別為其賦值為“x = np.arange(-6,7)”“y=np.arange(-6,7)”,對(duì)應(yīng)的數(shù)據(jù)范圍是從-6到6(中間包括0)共13個(gè)整數(shù);然后,建立變量xv和yv,并同時(shí)進(jìn)行賦值:“xv,yv = np.meshgrid(x,y)”,得到兩個(gè)“矩陣”,此時(shí)可運(yùn)行代碼分別查看一下xv和yv的值;接下來(lái)再建立變量z,賦值為“xv**2 + yv**2”,即函數(shù)“z=x的平方加y的平方”的Python表達(dá)方式,此時(shí)仍然可以查看變量z的矩陣數(shù)據(jù)(如圖2)。

      與繪制三維的點(diǎn)和線(xiàn)類(lèi)似,建立變量surface并進(jìn)行賦值“go.Surface(x=xv,y=yv,z=z)”,同樣是讓參數(shù)x、y和z與上面的xv、yv和z進(jìn)行三維坐標(biāo)點(diǎn)的一一對(duì)應(yīng);最后,通過(guò)“fig = go.Figure(surface)”和“fig.show()”進(jìn)行該函數(shù)的三維面顯示輸出(如圖3)。

      Plotly的操作難度確實(shí)不大,而且各種圖片的顯示效果都非常不錯(cuò),大家不妨一試。

      猜你喜歡
      賦值繪圖圖表
      關(guān)于1 1/2 … 1/n的一類(lèi)初等對(duì)稱(chēng)函數(shù)的2-adic賦值
      來(lái)自河流的你
      “禾下乘涼圖”繪圖人
      L-代數(shù)上的賦值
      強(qiáng)賦值幺半群上的加權(quán)Mealy機(jī)與加權(quán)Moore機(jī)的關(guān)系*
      基于HTML5 Canvas繪圖技術(shù)應(yīng)用
      雙周圖表
      足球周刊(2016年14期)2016-11-02 10:54:56
      雙周圖表
      足球周刊(2016年15期)2016-11-02 10:54:16
      雙周圖表
      足球周刊(2016年10期)2016-10-08 18:30:55
      圖表
      世界博覽(2016年16期)2016-09-27 18:25:26
      岳普湖县| 太仆寺旗| 贵港市| 仁布县| 湖北省| 昌都县| 滦南县| 达拉特旗| 荆州市| 晋州市| 垣曲县| 巴彦县| 利津县| 怀集县| 星子县| 扎囊县| 尚志市| 卢氏县| 三河市| 临邑县| 安西县| 泗阳县| 颍上县| 株洲市| 龙泉市| 辛集市| 饶阳县| 锡林浩特市| 花莲市| 巧家县| 宜宾县| 洞口县| 武邑县| 乌苏市| 闽清县| 山东| 通江县| 忻州市| 烟台市| 水富县| 望都县|