1 说明:

1.1 适合收藏,纯技术性探讨,适合孩子对正方体的认识和自己对编程代码的熟悉。

1.2 python3.8和matplotlib版本问题。

1.3 推荐指数:★★

2 无numpy法

2.1 代码:

# -*- coding: utf-8 -*-

from matplotlib import pyplot as plt

from mpl_toolkits.mplot3d import Axes3D

def cube(x, y, z, dx, dy, dz):

fig = plt.figure()

#ax设置背景颜色facecolor='black'为黑色

ax = Axes3D(fig,facecolor='black')

xx = [x, x, x+dx, x+dx, x]

yy = [y, y+dy, y+dy, y, y]

#底的四条边

ax.plot3D(xx, yy, [z] )

#顶的四条边

ax.plot3D(xx, yy, [z+dz])

#四条柱或者高

ax.plot3D([x, x], [y, y], [z, z+dz])

ax.plot3D([x, x], [y+dy, y+dy], [z, z+dz])

ax.plot3D([x+dx, x+dx], [y+dy, y+dy], [z, z+dz])

ax.plot3D([x+dx, x+dx], [y, y], [z, z+dz])

#坐标及其刻度隐藏

plt.axis('off')

plt.show()

if __name__ == "__main__":

#边长100=100=100,正方体

cube(0, 0, 0, 100, 100, 100)

2.2 图:

3 numpy的full_like法

3.1 代码:

# -*- coding: utf-8 -*-

from matplotlib import pyplot as plt

from mpl_toolkits.mplot3d import Axes3D

import numpy as np

#x,y,z是起点坐标,dx,dy,dz是50为边长=长宽高

def numpy_cube_one(x=0, y=0, z=0, dx=50, dy=50, dz=50):

fig = plt.figure(facecolor='black')

#ax = fig.add_subplot(1, 1, 1, projection='3d',facecolor='black')

#等于下面的这个

ax = Axes3D(fig,facecolor='black')

xx = np.linspace(x, x+dx, 2)

yy = np.linspace(y, y+dy, 2)

zz = np.linspace(z, z+dz, 2)

xx2, yy2 = np.meshgrid(xx, yy)

ax.plot_surface(xx2, yy2, np.full_like(xx2, z))

ax.plot_surface(xx2, yy2, np.full_like(xx2, z+dz))

yy2, zz2 = np.meshgrid(yy, zz)

ax.plot_surface(np.full_like(yy2, x), yy2, zz2)

ax.plot_surface(np.full_like(yy2, x+dx), yy2, zz2)

xx2, zz2= np.meshgrid(xx, zz)

ax.plot_surface(xx2, np.full_like(yy2, y), zz2)

ax.plot_surface(xx2, np.full_like(yy2, y+dy), zz2)

#坐标及其刻度隐藏

plt.axis('off')

plt.title("Cube")

plt.show()

if __name__ == "__main__":

numpy_cube_one()

3.2 图:

4 numpy的方法二:

4.1 初始代码,应该比较好理解,但是报错,估计与版本有关

#报错: if Z.ndim != 2:

#AttributeError: 'int' object has no attribute 'ndim'

# ndim返回的是数组的维度,返回的只有一个数,该数即表示数组的维度。

4.2 初始代码:

# -*- coding: utf-8 -*-

from matplotlib import pyplot as plt

from mpl_toolkits.mplot3d import Axes3D

import numpy as np

def numpy_cube_two(x=0, y=0, z=0, dx=50, dy=50, dz=50):

fig = plt.figure()

ax = fig.add_subplot(1, 1, 1, projection='3d')

xx = np.linspace(x, x+dx, 2)

yy = np.linspace(y, y+dy, 2)

zz = np.linspace(z, z+dz, 2)

#上下底

xx, yy = np.meshgrid(xx, yy)

ax.plot_surface(xx, yy, z)

ax.plot_surface(xx, yy, z+dz)

yy, zz = np.meshgrid(yy, zz)

ax.plot_surface(x, yy, zz)

ax.plot_surface(x+dx, yy, zz)

xx, zz = np.meshgrid(xx, zz)

ax.plot_surface(xx, y, zz)

ax.plot_surface(xx, y+dy, zz)

plt.show()

if __name__ == "__main__":

numpy_cube_two()

4.3 遇到问题,那就解决问题呗。

# -*- coding: utf-8 -*-

from matplotlib import pyplot as plt

from mpl_toolkits.mplot3d import Axes3D

import numpy as np

def numpy_cube_two(x=0, y=0, z=0, dx=50, dy=50, dz=50):

fig = plt.figure()

ax = fig.add_subplot(1, 1, 1, projection='3d')

xx = np.linspace(x, x+dx, 2)

yy = np.linspace(y, y+dy, 2)

zz = np.linspace(z, z+dz, 2)

#上下底

xx, yy = np.meshgrid(xx, yy)

#----修改后----

z1=np.ones((1,1))

z2=np.zeros((1,1))

ax.plot_surface(xx, yy, z1)

ax.plot_surface(xx, yy, z2)

#---仍有小bug---

yy, zz = np.meshgrid(yy, zz)

ax.plot_surface(x, yy, zz)

ax.plot_surface(x+dx, yy, zz)

xx, zz = np.meshgrid(xx, zz)

ax.plot_surface(xx, y, zz)

ax.plot_surface(xx, y+dy, zz)

plt.show()

if __name__ == "__main__":

numpy_cube_two()

4.4 图

4.5 说明:没有设置背景颜色和去除坐标轴,主要是有一个bug,就是有一个面没有画出,希望有大神指导,谢谢。

5 自己整理出来,仅供学习,欢迎教学相长,一起探讨。

python画正方体_python的matplotlib的3种正方体的画法及代码分析相关推荐

  1. 用python画雨滴_Python使用Matplotlib实现雨点图动画效果的方法

    本文实例讲述了Python使用Matplotlib实现雨点图动画效果的方法.分享给大家供大家参考,具体如下: 关键点 win10安装ffmpeg animation函数使用 update函数 win1 ...

  2. python画多边形_python – 使用matplotlib更有效地绘制多边形

    您可以考虑创建多边形的集合而不是单个多边形. 举个例子: import numpy as np import matplotlib.pyplot as plt from matplotlib.coll ...

  3. python画椭圆形_python 用 matplotlib 的 patch 模块绘制椭圆详解

    #创建画布 fig = plt.figure(figsize=(12, 8), facecolor='beige', #米黄色 )#划分子区 axes = fig.subplots(nrows=2, ...

  4. python画蝴蝶_python画蝴蝶曲线图的实例

    蝴蝶曲线是由Temple H·Fay发现的可用极坐标函数表示的蝴蝶曲线. 由于此曲线优美, 因此就想把它作为博客favicon.ico,这里我使用pytho matplotlib.pyplot包来绘制 ...

  5. python画离散点_python画散点图

    Python发射导弹的正确方式 今天Toby教你如何用python的basemap包绘制轰炸东京的地图. 在数据可视化过程中,我们常常需要将数据根据其采集的地理位置在地图上显示出来.比如说我们会想要在 ...

  6. python 画蝴蝶_python画蝴蝶曲线图的实例

    蝴蝶曲线是由Temple H·Fay发现的可用极坐标函数表示的蝴蝶曲线. 由于此曲线优美, 因此就想把它作为博客favicon.ico,这里我使用pytho matplotlib.pyplot包来绘制 ...

  7. 用python画蝴蝶_python画蝴蝶曲线图的实例

    蝴蝶曲线是由Temple H·Fay发现的可用极坐标函数表示的蝴蝶曲线. 由于此曲线优美, 因此就想把它作为博客favicon.ico,这里我使用pytho matplotlib.pyplot包来绘制 ...

  8. python画箭头_python画折线示意图实例代码

    python画折线图方法 前做PPT要用到折线图,嫌弃EXCEL自带的看上去不好看,就用python写了一个画折线图的程序. import matplotlib.pyplot as plt x=[1, ...

  9. python画树林_Python数据可视化-支付宝蚂蚁森林能量收取记录

    支付宝蚂蚁森林模块最早从2016年推出,题主最开始从支付宝集福活动开始接触.期间懒懒散散收过一些能量,但是相比朋友圈动辄几十几百公斤的能量值,我的能量值只有20Kg,想种棵胡杨连零头都不够.所以,本着 ...

最新文章

  1. DD_belatedPNG
  2. as 关联 android源码,android studio 2.x以上关联源码
  3. swoole使用 常用案例
  4. optee堆Virtualization(hypervisor)的支持
  5. Mac终端Terminal使用
  6. java每一个小时同步_Java同步块(synchronized block)使用详解
  7. 使用Qtip2来开发功能强大的删除和信息提示功能
  8. html mysql 数据列表_html的列表加载数据库
  9. win10任务栏开始菜单等系统图标点击无反应的解决方法
  10. 金融级云原生如何助力双十一?蚂蚁金服的实践经验是这样
  11. deflate与gzip
  12. android高德地图截屏,高德地图-地图截屏
  13. 创建RF测试库之使用装饰器@keyword
  14. 《统计学习方法》——隐马尔可夫模型
  15. Html5 jquery视频播放插件Video.js
  16. 用openAI写个js的排序算法(快速排序算法)
  17. 苹果xr如何关机_iPhone如何进入DFU模式
  18. do...while循环语句、死循环、循环的嵌套、Break、Continue
  19. python 一等公民_Python中一等公民——函数
  20. Reflector破译

热门文章

  1. Linux系统之文件共享目录设置方法
  2. 光电特性实验台,QY-GD01
  3. 某音频格式转换器算法分析
  4. 图片批量处理-图片批量处理软件
  5. mysql deadlock 展示_MySQL DeadLock -- 二级索引导致的死锁
  6. 使用 Ansible 管理 MySQL 复制
  7. ISP PIPLINE (一) BLC 以及 线性化
  8. 点击链接直接下载的实现
  9. 【淘宝ERP-资料收集】C# 类型 对应 SQLserver类型
  10. Leancloud-数据存储功能入门