日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

matplotlib - 3D scatter plot

發(fā)布時間:2024/1/17 编程问答 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 matplotlib - 3D scatter plot 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

Matplotlib中也能支持一些基礎的3D圖表,比如曲面圖、散點圖和柱狀圖。這些3D圖表需要使用mpl_toolkits模塊。

先采樣一堆3維的正態(tài)分布樣本,保證方向上的均勻性;
然后歸一化,讓每個樣本到原點的距離為1,相當于得到了一個均勻分布在球面上的樣本;
再接著把每個樣本都乘上一個均勻分布隨機數(shù)的開3次方,這樣就得到了在球體內(nèi)均勻分布的樣本;
最后根據(jù)判別平面3x+2y-z-1=0對平面兩側(cè)樣本用不同的形狀和顏色畫出。

import numpy as np import matplotlib.pyplot as plt from mpl_toolkits.mplot3d import Axes3D #3D圖表需要使用“mpl_toolkits”模塊#①構造數(shù)據(jù) np.random.seed(42) #隨機數(shù)種子 n_samples = 500 # 采樣個數(shù)為500dim = 3 #生成一組3維正態(tài)分布數(shù)據(jù),數(shù)據(jù)方向完全隨機 samples = np.random.multivariate_normal(np.zeros(dim), np.eye(dim), n_samples) #500x3 #通過把每個樣本到原點距離和均勻分布吻合得到球體內(nèi)均勻分布的樣本 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])#②將數(shù)據(jù)分為兩組,以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)# 用不同顏色、形狀的圖標區(qū)分兩組數(shù)據(jù) 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的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。