码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • python 各种画图(2D 3D)-1 _matplotlib 官方网站笔记


    背景

    需利用python进行3D可视化处理,用于分析python得到的数据的正确性。

    知识学习

    python高阶3D绘图---pyvista模块,mayavi模块,pyopengl模块,MoviePy模块基础使用-CSDN博客

    python用于3D绘图的模块比较多,pyvista模块,mayavi模块,pyopengl模块,MoviePy模块matplotlib库。建议直接看官方教程比较快。工具很多,具体使用哪一种,根据各模块的特点选用。

    如下官网链接

    Mayavi: 3D scientific data visualization and plotting in Python — mayavi 4.8.3.dev0 文档

    Matplotlib 文档_Matplotlib 中文网

    Matplotlib — Visualization with Python  (推荐看英文官网)

    Examples — PyVista 0.43.1 documentation

    PyOpenGL -- The Python OpenGL Binding (sourceforge.net)

    MoviePy中文手册 — moviepy-cn 文档

    应用

    代码如下:

    这个项目是因为,已经将得到的数据存在xlsx中,所以增加了读数据的操作,直接调用python的数据也一样,主要用到如下代码用于3d 散点图的显示

    1. # 显示图形
    2. fig = plt.figure(figsize=(10, 8)) # 设置图形大小
    3. ax = fig.add_subplot(111, projection='3d')
    4. ax.scatter(Oab_rows_x, Oab_rows_y, Oab_rows_z, label='O set', s=1, alpha=0.8)
    5. ax.scatter(Pxb_rows_x, Pxb_rows_y, Pxb_rows_z, color='red', label='x set', s=1, alpha=0.8)
    6. ax.scatter(Pyb_rows_x, Pyb_rows_y, Pyb_rows_z, color='black', label='y set', s=1, alpha=0.8)
    7. # 添加图例
    8. ax.legend()
    9. plt.show()

    官网中还有很多图例,如下截图 

     怎么设置图例,出图漂亮

     一个应用代码如下: (仅做学习记录,画图看官网)

    1. import numpy as np
    2. import math
    3. import pandas as pd
    4. import matplotlib
    5. matplotlib.use('TkAgg')
    6. import matplotlib.pyplot as plt
    7. import openxlsx
    8. # 主函数
    9. def main(excel_file, sheet_name):
    10. # 读取Excel文件
    11. df = pd.read_excel(excel_file, sheet_name=sheet_name)
    12. result_rows = []
    13. Oab_rows_x = []
    14. Oab_rows_y = []
    15. Oab_rows_z = []
    16. Pxb_rows_x = []
    17. Pxb_rows_y = []
    18. Pxb_rows_z = []
    19. Pyb_rows_x = []
    20. Pyb_rows_y = []
    21. Pyb_rows_z = []
    22. # 遍历DataFrame的每一行
    23. for index, row in df.iterrows():
    24. Oab = np.array([row['Oab_x'], row['Oab_y'], row['Oab_z']])
    25. Pxb = np.array([row['Pxb_x'], row['Pxb_y'], row['Pxb_z']])
    26. Pyb = np.array([row['Pyb_x'], row['Pyb_y'], row['Pyb_z']])
    27. Oab_row_x = Oab[0]
    28. Oab_rows_x.append(Oab_row_x)
    29. Oab_row_y = Oab[1]
    30. Oab_rows_y.append(Oab_row_y)
    31. Oab_row_z = Oab[2]
    32. Oab_rows_z.append(Oab_row_z)
    33. Pxb_row_x = Pxb[0]
    34. Pxb_rows_x.append(Pxb_row_x)
    35. Pxb_row_y = Pxb[1]
    36. Pxb_rows_y.append(Pxb_row_y)
    37. Pxb_row_z = Pxb[2]
    38. Pxb_rows_z.append(Pxb_row_z)
    39. Pyb_row_x = Pyb[0]
    40. Pyb_rows_x.append(Pyb_row_x)
    41. Pyb_row_y = Pyb[1]
    42. Pyb_rows_y.append(Pyb_row_y)
    43. Pyb_row_z = Pyb[2]
    44. Pyb_rows_z.append(Pyb_row_z)
    45. # 显示图形
    46. fig = plt.figure(figsize=(10, 8)) # 设置图形大小
    47. ax = fig.add_subplot(111, projection='3d')
    48. ax.scatter(Oab_rows_x, Oab_rows_y, Oab_rows_z, label='O set', s=1, alpha=0.8)
    49. ax.scatter(Pxb_rows_x, Pxb_rows_y, Pxb_rows_z, color='red', label='x set', s=1, alpha=0.8)
    50. ax.scatter(Pyb_rows_x, Pyb_rows_y, Pyb_rows_z, color='black', label='y set', s=1, alpha=0.8)
    51. # 添加图例
    52. ax.legend()
    53. plt.show()
    54. # 调用主函数
    55. if __name__ == "__main__":
    56. excel_file = 'C:\\Users\Desktop\output.xlsx' # 假设Excel文件名是data.xlsx
    57. sheet_name = 'Sheet 1' # 假设数据在第一个工作表上
    58. main(excel_file, sheet_name)

    其中如下代码是因为报错,可参照链接解决。

    1. import matplotlib
    2. matplotlib.use('TkAgg')
    3. import matplotlib.pyplot as plt
    '
    运行

    matplotlib:报错:ImportError: Cannot load backend ‘TkAgg‘ which requires the ‘tk‘ interactive 的处理记录_importerror: cannot load backend 'tkagg' which req-CSDN博客

    拓展:matplotlib 官方网站

    按数据分类:

    Pairwise data#   

    成对、表格、 和函数数据。(x,y)" role="presentation">(x,y)(x,y)(var_0,⋯,var_n)" role="presentation">(var_0,⋯,var_n)(var_0,⋯,var_n)f(x)=y" role="presentation">f(x)=yf(x)=y

    统计类数据

    数据集中至少一个变量的分布图。其中一些方法还计算分布。

     网格化数据

    不规则的网格化数据

    3D和立体数据

    用户指导

    目录如下

    Quick start guide#

    • A simple example
    • Parts of a Figure
    • Types of inputs to plotting functions
    • Coding styles
    • Styling Artists
    • Labelling plots
      • Axes labels and text
      • Using mathematical expressions in text
      • Annotations
      • Legends
    • Axis scales and ticks
    • Color mapped data
    • Working with multiple Figures and Axes
    • More reading

    上图是figure的组成元素。要是绘制简单的图形,直接参照Quick start guide官方代码。也可以直接看教程。

    教程

    Introductory#  初级

    • Quick start guide

    • Customizing Matplotlib with style sheets and rcParams  自定义属性及参数设置

    • Animations using Matplotlib       动画

    Intermediate 中级

    • Legend guide        图例指南

    • Styling with cycler   演示自定义属性周期设置,以控制多线绘图的颜色和其他样式属性。

    • Constrained layout guide  约束布局

    • Tight layout guide      紧凑布局

    • Arranging multiple Axes in a Figure  多坐标

    • Autoscaling Axis   可缩放

    • origin and extent in imshow  

    Advanced 高级

    • Faster rendering by using blitting   动画

    • Path Tutorial  轨迹

    • Path effects guide   轨迹效果

    • Transformations Tutorial    官网说应用较少

    Colors  颜色设置

    See Colors.

    Text  文本设置

    See Text.

    Toolkits  工具箱子

    See User Toolkits.

    • The axisartist toolkit    自定义轴类
    • The axes_grid1 toolkit  网格图工具
    • The mplot3d toolkit    3D图工具

    Contents

    • The mplot3d toolkit

      • Line plots

      • Scatter plots

      • Wireframe plots

      • Surface plots

      • Tri-Surface plots

      • Contour plots

      • Filled contour plots

      • Polygon plots

      • Bar plots

      • Quiver

      • 2D plots in 3D

      • Text

  • 相关阅读:
    MFC下拉框控件用法
    线程的状态
    已解决ModuleNotFoundError: No module named ‘requests‘
    配电房环境智能监控系统:守护电力设施,保障安全运行
    蓝桥杯---第一讲 递归与递推
    九、2023.10.3.Linux(end).9
    Qt QLineEdit详解
    npm配置taobao镜像及nrm快速换源工具介绍
    4-Dubbo架构设计与底层原理-服务导出源码分析(上)
    【小程序】小游戏开发工具详解(下)
  • 原文地址:https://blog.csdn.net/m0_63902994/article/details/139381920
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号