生活随笔
收集整理的這篇文章主要介紹了
matplotlib - 3D scatter plot
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
Matplotlib中也能支持一些基礎的3D圖表,比如曲面圖、散點圖和柱狀圖。這些3D圖表需要使用mpl_toolkits模塊。
先采樣一堆3維的正態分布樣本,保證方向上的均勻性;
然后歸一化,讓每個樣本到原點的距離為1,相當于得到了一個均勻分布在球面上的樣本;
再接著把每個樣本都乘上一個均勻分布隨機數的開3次方,這樣就得到了在球體內均勻分布的樣本;
最后根據判別平面3x+2y-z-1=0對平面兩側樣本用不同的形狀和顏色畫出。
import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D #3D圖表需要使用“mpl_toolkits”模塊#①構造數據
np.random.seed(42) #隨機數種子
n_samples = 500 # 采樣個數為500dim = 3
#生成一組3維正態分布數據,數據方向完全隨機
samples = np.random.multivariate_normal(np.zeros(dim), np.eye(dim), n_samples) #500x3
#通過把每個樣本到原點距離和均勻分布吻合得到球體內均勻分布的樣本
for i in range(samples.shape[0]):r = np.power(np.random.random(), 1.0/3.0)samples[i] *= r/np.linalg.norm(samples[i])#②將數據分為兩組,以3x+2y-z=1作為判別平面
upper_samples = []
lower_samples = []
for x, y, z in samples: if z > 3*x+2*y-1:upper_samples.append((x, y, z))else:lower_samples.append((x, y, z))#③制作散點圖
fig = plt.figure('3D scatter plot')
ax = fig.add_subplot(111, projection='3d') #3d圖需要加projection='3d'
uppers = np.array(upper_samples)
lowers = np.array(lower_samples)# 用不同顏色、形狀的圖標區分兩組數據
ax.scatter(uppers[:,0], uppers[:,1], uppers[:,2], c='r', marker='o') #上半部分為紅色圓點
ax.scatter(lowers[:,0], lowers[:,1], lowers[:,2], c='g', marker='^') #下半部分為綠色三角plt.savefig('3D scatter plot.png') #保存為圖片
plt.show()
參考鏈接:http://python.jobbole.com/87471/
總結
以上是生活随笔為你收集整理的matplotlib - 3D scatter plot的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。