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相关推荐

  1. R语言使用car包的scatter3d函数可视化可以交互旋转的3D散点图(Spinning 3D scatter plot by the scatter3d() function of car)

    R语言使用car包的scatter3d函数可视化可以交互旋转的3D散点图(Spinning 3D scatter plot produced by the scatter3d() function i ...

  2. cufflinks基于dataframe数据绘制三维散点图(3d scatter plot)

    cufflinks基于dataframe数据绘制三维散点图(3d scatter plot) 查看df.iplot对应的各种自定义参数,在jupyter notebook中输入如下信息: df.ipl ...

  3. Python Matplotlib 3D绘图详解(汇总)

    Python Matplotlib 3D绘图详解(汇总) 最初开发的 Matplotlib,仅支持绘制 2d 图形,后来随着版本的不断更新, Matplotlib 在二维绘图的基础上,构建了一部分较为 ...

  4. Python使用matplotlib可视化散点图、使用seaborn中的lmplot函数可视化不同分组散点图的最优线性回归拟合曲线(Scatter plot with regression line)

    Python使用matplotlib可视化散点图.使用seaborn中的lmplot函数可视化不同分组散点图的最优线性回归拟合曲线(Scatter plot with linear regressio ...

  5. python使用matplotlib可视化3D柱状图(3D bar plot、三维柱状图、包含三个坐标轴x、y、z)、设置zdir参数为y、改变3d图观察的角度

    python使用matplotlib可视化3D柱状图(3D bar plot.三维柱状图.包含三个坐标轴x.y.z).设置zdir参数为y.改变3d图观察的角度 目录

  6. Python使用matplotlib可视化散点图、可视化两个数值变量之间的关系(Scatter plot)

    Python使用matplotlib可视化散点图.可视化两个数值变量之间的关系(Scatter plot) 目录 Python使用matplotlib可视化散点图.可视化两个数值变量之间的关系(Sca

  7. Matplotlib使用scatter函数在Python中绘制气泡图(bubble plot)、通过size参数指定数据点的大小、自定义不同分组的气泡的色彩

    Matplotlib使用scatter函数在Python中绘制气泡图(bubble plot).通过size参数指定数据点的大小.自定义不同分组的气泡的色彩 目录

  8. Matplotlib使用scatter函数在Python中绘制气泡图(bubble plot)、通过size参数指定数据点的大小

    Matplotlib使用scatter函数在Python中绘制气泡图(bubble plot).通过size参数指定数据点的大小 目录

  9. python画点的函数_【Python】matplotlib绘图 - scatter、plot函数画离散点(带有边线)...

    matplotlib更新之后发现默认的scatter函数绘制的离散点不带有边框.查阅相关文档之后发现需要对其中的参数进行设置. 官方手册:https://matplotlib.org/api/_as_ ...

最新文章

  1. VC++网络资源集合
  2. 阿里“三活”数据中心实践经验:没人能做,我们就自己做
  3. printf格式化字符串用法
  4. P7 计算机的性能指标
  5. java 并发编程实例_Java并发编程案例解读
  6. SAP Marketing Cloud的sentiment engagement
  7. 线切割机上的DOS系统
  8. 程序显示文本框_【教程】TestComplete测试桌面应用程序教程(二)
  9. centos linux7修改主机名,CentOS7操作系统下永久修改主机名
  10. 阿里明确中国数字商业板块组织架构 全面聚焦客户体验
  11. 【零基础学Java】—static关键字概述(十六)
  12. 【性能优化】如何让APK瘦成一道闪电
  13. 30天自制操作系统之叠加处理
  14. 代码管理学:通过配置文件限制依赖关系
  15. OneTool多平台助手程序网页源码全解版
  16. 桥接模式与Nat模式的区别
  17. 启动rabbitmq
  18. # Alpha冲刺之事后诸葛亮
  19. 神兽保佑,永无bug!
  20. lnmp环境加上一些包的安装-持续更新(针对centos6和7)

热门文章

  1. html文字超链接不让变色,css不让超链接变色怎么设置?
  2. kmo检验和bartlett球形检验_Q球形钢支座的抗弯度和执行标准
  3. sqoop2 java api实现_Sqoop2 Java客户端API指南
  4. win7计算机管理禁用,Win7任务管理器已被系统管理员禁用怎么办
  5. Maven projects need to be imported反复弹出如何办?
  6. mybatis 配置文件报错:Referenced file contains errors(file:/D:/config/ mybatis-3-mapper.dtd).
  7. Android中的动画
  8. cmfclistctrl怎么设置某列文字颜色_ppt实用技巧:如何轻松设置合意的超链接
  9. 解决IE10以下对象不支持“bind“属性或方法
  10. TensorFlow学习笔记(十一)读取自己的数据进行训练