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  # 采样个数为500

dim = 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
  • 1
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值