画个立方体

matplotlib中,通过plt.voxels绘制立方体,下面先绘制一个最质朴的立方体

代码为

import matplotlib.pyplot as plt
import numpy as npx, y, z = np.indices((2, 2, 2))
filled = np.ones((1,1,1))
ax = plt.subplot(projection='3d')
ax.voxels(x,y,z, filled=filled)
plt.show()

其中,x,y,z表示顶点,filled表示被填充的区域。由于其顶点数量为2×2×22\times2\times22×2×2,故只有一个立方体,从而filled是一个1×1×11\times1\times11×1×1的张量。

按照这个思路,可以做一个魔方

x, y, z = np.indices((4, 4, 4))
filled = np.ones((3,3,3))
cFace = np.where(filled, '#00AAAAA0', '#00AAAAA0')
cEdge = np.where(filled, '#008888', '#008888')
ax = plt.subplot(projection='3d')
ax.voxels(x,y,z, filled=filled, facecolors=cFace, edgecolors=cEdge)
plt.show()

其效果为

由于x,y,zx,y,zx,y,z均为4×4×44\times4\times44×4×4,则这些顶点共分割出3×3×33\times3\times33×3×3的立方体,而filled填充,facecolors对面上色以及edgecolors对线上色,都是针对这3×3×33\times3\times33×3×3的立方体而言的。其中,颜色的格式是RGBA,A就是透明度。

接下来,做一个八叉树的示意图

ax = plt.subplot(projection='3d')
ax.set_xlim(0,2)
ax.set_ylim(0,2)
ax.set_zlim(0,2)
ax.axis('off')x, y, z = np.indices((3, 3, 3))
filled = np.ones((2,2,2))
filled[1,1,1] = False   #(1,1,1)这个立方体将要继续被分割
cFace = np.where(filled, '#00AAAACC', '#00AAAACC')
cEdge = np.where(filled, '#008888', '#008888')
ax.voxels(x,y,z, filled=filled, facecolors=cFace, edgecolors=cEdge) #第一次分割x, y, z = np.indices((3, 3, 3))/2+1
cFace = np.where(filled, '#00AA00DD', '#00AA00DD')
cEdge = np.where(filled, '#008800', '#008800')
ax.voxels(x,y,z, filled=filled, facecolors=cFace, edgecolors=cEdge) #第二次分割x, y, z = np.indices((3, 3, 3))/4+1.5
filled[1,1,1] = True
cFace = np.where(filled, '#0000AAEE', '#0000AAEE')
cEdge = np.where(filled, '#000000', '#000000')
ax.voxels(x,y,z, filled=filled, facecolors=cFace, edgecolors=cEdge) #第三次分割plt.show()

其效果为

Python画正方体相关推荐

  1. python画正方体_python的matplotlib的3种正方体的画法及代码分析

    1 说明: 1.1 适合收藏,纯技术性探讨,适合孩子对正方体的认识和自己对编程代码的熟悉. 1.2 python3.8和matplotlib版本问题. 1.3 推荐指数:★★ 2 无numpy法 2. ...

  2. python画正方体_python绘制立方体的方法

    本文实例为大家分享了python绘制立方体的具体代码,供大家参考,具体内容如下 #!/usr/bin/env python # This is (almost) a direct C++ to Pyt ...

  3. 使用Python中的Turtle库画正方体

    使用Python中的Turtle库画正方体 先献上画完之后的图形,还有些许瑕疵,例如虚线没有对齐,有待于后续微调 以下是实现代码 # encoding=utf-8 import turtle# 画正面 ...

  4. 【圣诞节限定】教你用Python画圣诞树,做个浪漫的程序员

    最近在各大社交平台看到好多圣诞树,看到大佬们画的圣诞树一个比一个精致,我也特别想尝试画一棵特别的圣诞树.下面是我画的一棵简易的圣诞树,虽然和网络上大佬们的圣诞树相比不是很精致,但是对于萌新们来说,画这 ...

  5. 怎么用python画个电脑_python语言还是java如何用python画爱心

    用python绘制爱心的基本步骤如下: 002pc.com对<python语言还是java如何用python画爱心>总结来说,为我们学习Python很实用. 首先先下载安装好python程 ...

  6. 开学季,教你用Python画大学教室座位神分区图!网友直呼“中枪”

    作者 | 丁彦军 转载自恋习Python(ID:sldata2017) 我们上过大学的朋友们都知道,大学没有固定教室也没有固定的座位,所以大家可以随便找个自己喜欢的位置坐下. 别看这些不起眼的座位,感 ...

  7. 圣诞节!教你用Python画棵圣诞树

    作者 | 糖甜甜甜,985高校经管研二,擅长用 Python.R.tableau 等工具结合统计学和机器学习模型做数据分析. 来源 | 经管人学数据分析(ID:DAT-2017) 如何用Python画 ...

  8. 用python画时序图源代码_使用python实现画AR模型时序图

    背景: 用python画AR模型的时序图. 结果: 代码: import numpy as np import matplotlib.pyplot as plt """ ...

  9. 用python画微信捂脸_用 Python 画一个捂脸表情

    微信中的捂脸表情相信大家都不陌生,我见过以及自己使用这个表情的频率都是比较高的,可以说这个表情算是大部分人的主打表情之一了,本文我使用 Python 来画一下这个表情,我们使用到的库还是 turtle ...

最新文章

  1. 剑指offer:二维数组中的查找python实现
  2. 谷歌、OpenAI等警告:BERT、GPT-3等大型语言模型都有一个重大缺陷,很危险...
  3. Java线程详解(18)-障碍器
  4. php+curlmultiinit_多线程 - PHP的curl_multi_init并发测试问题
  5. 分贝(BD)的含义以及关系(有助于深刻理解)
  6. 移动端页面不需要在meta加_移动端适配viewport缩放方案
  7. 拼音模糊搜索 php,基于 XunSearch(迅搜)SDK 的全文搜索 Laravel 5.* 软件包,支持全拼、拼音简写、模糊搜索、热门搜索、搜索提示...
  8. ESP8285 sdkconfig
  9. 专科计算机毕业论文范文 致谢,大专毕业设计致谢模板(精选范文3篇)
  10. matlab巴特沃斯滤波器算法解释,巴特沃斯滤波器原理.doc
  11. 打印機lpt接口轉com接口
  12. 武田收到CHMP同意ALUNBRIG® (brigatinib)用于ALK+非小细胞肺癌一线治疗的肯定意见
  13. Gmail邮箱登陆问题解决方案
  14. C解决duplicate symbol
  15. hdu 4622 Reincarnation(hash)
  16. 沁透著一片悠然禪意 《掬水》
  17. 如何远程登陆Linux服务器
  18. [‘1‘,‘2‘,‘3‘].map(parseInt)结果讲解
  19. STM32 高级定时器周期、频率、占空比、对外输出电压详解
  20. mac迅雷精简教程,get一下吧!

热门文章

  1. 怎样获得手机的外网ip???
  2. 汉澳sinox载入ntfs硬盘,移动ntfs硬盘,u盘 并读写完全成功
  3. 消息中间件:选型分析。
  4. 求平方根的牛顿迭代matlab程序,牛顿迭代法求平方根
  5. unity手游之聊天SDK集成与使用一
  6. “21 天好习惯”第一期-7
  7. AC695X_FCCBQB认证资料获取[杰理全系列]
  8. python字符串转json(python字符串转浮点数)
  9. 对网页 ‘’为所欲为‘’ 之手动实现深色模式?
  10. 帆软报表决策系统跨域登录