您好,登錄后才能下訂單哦!
這期內容當中小編將會給大家帶來有關怎么在Python中使用Matplotlib實現一個三維數據的散點圖,文章內容豐富且以專業的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。
Python是一種跨平臺的、具有解釋性、編譯性、互動性和面向對象的腳本語言,其最初的設計是用于編寫自動化腳本,隨著版本的不斷更新和新功能的添加,常用于用于開發獨立的項目和大型項目。
實現過程
其中就有我們需要參考的部分,也就是mplot3d example code : 2dcollections3d_demo.py。下面貼出其中的代碼段。
from mpl_toolkits.mplot3d import Axes3D import numpy as np import matplotlib.pyplot as plt fig = plt.figure() ax = fig.gca(projection='3d') # Plot a sin curve using the x and y axes. x = np.linspace(0, 1, 100) y = np.sin(x * 2 * np.pi) / 2 + 0.5 ax.plot(x, y, zs=0, zdir='z', label='curve in (x,y)') # Plot scatterplot data (20 2D points per colour) on the x and z axes. colors = ('r', 'g', 'b', 'k') x = np.random.sample(20*len(colors)) y = np.random.sample(20*len(colors)) c_list = [] for c in colors: c_list.append([c]*20) # By using zdir='y', the y value of these points is fixed to the zs value 0 # and the (x,y) points are plotted on the x and z axes. ax.scatter(x, y, zs=0, zdir='y', c=c_list, label='points in (x,z)') # Make legend, set axes limits and labels ax.legend() ax.set_xlim(0, 1) ax.set_ylim(0, 1) ax.set_zlim(0, 1) ax.set_xlabel('X') ax.set_ylabel('Y') ax.set_zlabel('Z') # Customize the view angle so it's easier to see that the scatter points lie # on the plane y=0 ax.view_init(elev=20., azim=-35) plt.show()
樣例的運行結果大致如下:
首先樣例的數據來自于隨機數的產生,但是在我實際使用的過程中,數據是需要預先存儲與導入的。因此我添加數據導入部分:
import scipy.io as sio #get the data form F:\matlab.mat data = sio.loadmat('F:\matlab.mat') m = data['data']
值得一提的是這只是我測試的數據,在實際應用過程中,數據的格式是多種多樣的,所以需要做數據格式轉化的模塊。同時采用.mat數據的格式,用戶可以用matlab打開,并對數據進行更改之類的操作。采用這種方法導入后,會自動形成數組。
如上圖所示,是數據在matlab中打開的形式,因為我們需要畫出三維散點圖,會自動產生3×60的數組,每行代表每一維的數據。貼一張做出的Demo的成果圖:
因為我是用Time變量做為Xlabel,同時模擬數據是等時間間距進行采樣的,同時想要在不同的時間點采用不同的顏色。因此需要對ax.scatter(x,y,z,c)中的c變量進行更改,可以用變量代替,這樣就可以用個循環結構實現顏色的切換功能。
for a in x: if a == 0.1: C.append('c') elif a == 0.2: C.append('r') elif a == 0.3: C.append('y') elif a == 0.4: C.append('k') ax.scatter(x, y, z, c=C)
顏色切換部分代碼如下:
import scipy.io as sio from mpl_toolkits.mplot3d import Axes3D import matplotlib.pyplot as plt import numpy as np def Singleplot(): data = sio.loadmat('F:\matlab.mat') m = data['data'] x = m[0] y = m[1] z = m[2] C = [] ax = plt.subplot(111, projection='3d') for a in x: if a == 0.1: C.append('c') elif a == 0.2: C.append('r') elif a == 0.3: C.append('y') elif a == 0.4: C.append('k') ax.scatter(x, y, z, c=C) ax.set_xlabel('Time') ax.set_ylabel('Frequence') ax.set_zlabel('Amplitude') plt.show() singleplot()
上述就是小編為大家分享的怎么在Python中使用Matplotlib實現一個三維數據的散點圖了,如果剛好有類似的疑惑,不妨參照上述分析進行理解。如果想知道更多相關知識,歡迎關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。