• Python 竟然可以绘制3D图像!


    Python,这门已经存在了很多年(以技术年度来计算)并且拥有几乎所有功能库的编程语言。想要发送电子邮件吗?Python可以帮助您。想要进行一些复杂的数学计算吗?Python也能胜任。日常我还会用它进行图像的绘制以及数据的可视化。但是大部分小伙伴应该没有使用过他的3D功能。所以,戴上您的3D眼镜(玩笑脸)!~

    必备库

    • Matplotlib:它建立在NumPy数组坚实的基础上,旨在与 SciPy 堆栈协同工作。

    • Numpy:用于数组处理的首选包,提供高性能的多维数组和矩阵 python 进行数据处理的好伙伴。

    • mpl_toolkits:这是3D魔法发生的地方,它提供了基本的3D绘图工具。

    示例1:3D中的正弦波舞蹈

    使用np.arange和np.sin,我们创建一个点的数组。然后,使用matplotlib的scatter()方法帮助我们绘制这个舞蹈。

    1. # Import necessary libraries
    2. import numpy as np
    3. import matplotlib.pyplot as plt
    4. from mpl_toolkits.mplot3d import Axes3D
    5. # Set up the figure and axis
    6. fig = plt.figure(figsize=(10, 10))
    7. ax = plt.axes(projection='3d')
    8. # Generating data points for the 3D sine wave
    9. x = np.arange(0, 20, 0.1)
    10. y = np.sin(x)
    11. z = y * np.sin(x)
    12. c = x + y
    13. # Plotting the scatter graph
    14. ax.scatter(x, y, z, c=c)
    15. # Turning off the axis
    16. plt.axis('off')
    17. # Display the graph
    18. plt.show()

    0b30ef85b9f28f0b06aced6fb45396c4.png       1288ec5972142f97fa49d37fb1e1718c.png

    运行结果展示

    示例2:多彩的立方体

    我们建立一个具有X=5、Y=5、Z=5维度的3D坐标轴,使用np.ones()来构建立方体的维度,然后使用alpha参数来控制颜色的透明度。

    1. # Set up the figure and axis
    2. fig = plt.figure(figsize=(10, 10))
    3. ax = plt.axes(projection='3d')
    4. # Data points for the cube
    5. x = np.ones(5)
    6. y = np.ones(5)
    7. z = np.ones(5)
    8. # Plotting the cube with different opacities
    9. for i in range(5):
    10. for j in range(5):
    11. for k in range(5):
    12. ax.scatter(i, j, k, alpha=(i+j+k)/15)
    13. # Turning off the axis
    14. plt.axis('off')
    15. # Display the graph
    16. plt.show()

    7f8ec8bc1b9463d67984ceb47048800b.png      ea67b67971ed98bd5107ddf482d4e690.png

    运行结果展示

    示例3:绿色线框

    使用numpy.linspace(),我们创建了一个线性放置的元素数组,然后可视化了一个3D线框。

    1. # Set up the figure and axis
    2. fig = plt.figure(figsize=(10, 10))
    3. ax = plt.axes(projection='3d')
    4. # Generating data points
    5. x = np.linspace(-5, 5, 50)
    6. y = np.linspace(-5, 5, 50)
    7. x, y = np.meshgrid(x, y)
    8. z = np.sin(np.sqrt(x**2 + y**2))
    9. # Plotting the wireframe
    10. ax.plot_wireframe(x, y, z, color='green')
    11. # Turning off the axis
    12. plt.axis('off')
    13. # Display the graph
    14. plt.show()

    58c5e5d6a913ef38a51382e4092b8ea5.png     b10b774fbd9d77f1cd8b9a405d873ddb.png

    运行结果展示

    示例4:360度螺旋

    我们绘制了一个螺旋图形,并使用循环在360度旋转中查看它。

    1. # Set up the figure and axis
    2. fig = plt.figure(figsize=(10, 10))
    3. ax = plt.axes(projection='3d')
    4. # Generating the spiral data points
    5. theta = np.linspace(-8 * np.pi, 8 * np.pi, 100)
    6. z = np.linspace(-2, 2, 100)
    7. r = z**2 + 1
    8. x = r * np.sin(theta)
    9. y = r * np.cos(theta)
    10. # Plotting the spiral
    11. ax.plot(x, y, z, 'b-')
    12. # Turning off the axis
    13. plt.axis('off')
    14. # Display the graph
    15. plt.show()

    af8fc879e47f5abe82449fb63b0efefc.png     f3e5bce9749ebba583bb41914eda461d.png

    运行结果展示

    尽管Python还不能为您冲杯咖啡(但愿意做到),但它确实可以让您的数据在3D中跳舞!

    ·  END  ·

    HAPPY LIFE

    6b06622d85bfc6f7f07f7a239438325e.png

    本文仅供学习交流使用,如有侵权请联系作者删除

  • 相关阅读:
    浅谈单元测试 Junit4
    腾讯大佬的“百万级”MySQL笔记,基础+优化+架构一篇搞定,秋招必看系列!
    《A Simple Baseline for BEV Perception Without LiDAR》论文笔记
    嵌入式开发:ST-LINK V2.1仿真器,Type-C接口
    【9】Docker的迁移与备份
    OpenGL获取GPU信息
    java毕业生设计校园社团管理系统计算机源码+系统+mysql+调试部署+lw
    Pytorch —— 基础指北_贰 高中生都能看懂的[反向传播和梯度下降]
    G1 收集器
    SSM的技术论坛含前后台(游戏内容)
  • 原文地址:https://blog.csdn.net/weixin_38739735/article/details/132913818