首页 > Python资料 博客日记
python绘制3D瀑布图
2024-09-25 02:00:06Python资料围观43次
这篇文章介绍了python绘制3D瀑布图,分享给大家做个参考,收藏Python资料网收获更多编程知识
成品:
代码:
import matplotlib.pyplot as plt
import matplotlib.ticker as ticker
from mpl_toolkits.mplot3d.art3d import Poly3DCollection
import numpy as np
def line_3d(x, y, z, x_label_indexs):
"""
在y轴的每个点,向x轴的方向延伸出一个折线面:展示每个变量的时序变化。
x: x轴,时间维,右边。
y: y轴,变量维,左边。
z: z轴,数值维。二维矩阵,y列x行。每一行是对应变量的一个时间序列。
x_label_indexs: 需要标注的时间点。
"""
x_num = len(x)
y_num = len(y)
if z.shape[0] != y_num or z.shape[1] != x_num:
return -1
# 制作坐标格点(z中每个点对应的x、y坐标)
X, Y = np.meshgrid(x, y)
# 初始化
canvas = plt.figure() # 创建画布
axs = canvas.add_subplot(111, projection='3d') # 添加三维子图
# 若把111改成234,则意思是:创建一个2*3的网格,并在第4个格子中创建一个axes
# 绘制折线面
for i in range(y_num): # 遍历
# z值线,即实际数据。
axs.plot(Y[i], X[i], z[i], color=plt.cm.viridis(i/y_num),
linestyle='-', linewidth=1, marker='o', markersize=3, alpha=0.3)
# 0值线(z=0),与“地面”连接。
axs.plot(Y[i], X[i], np.zeros_like(z[i]), color='gray', alpha=0.5)
# 绘制有颜色的平面:本质是填充z值与0值之间的区域。
polygon = [
[Y[i, 0], X[i, 0], 0], # 左下
[Y[i, -1], X[i, -1], 0], # 右下
]
for j in range(x_num-1, -1, -1): # 依次添加点,使得polygon成为一个完整的闭合多边形
polygon.append([Y[i, j], X[i, j], z[i, j]])
axs.add_collection3d(Poly3DCollection([polygon], color=plt.cm.viridis(i/y_num), alpha=0.3))
# 标注数字(z值)
for k in x_label_indexs:
axs.text(Y[i, k]-0.05, X[i, k], z[i, k]+0.02, f'{z[i, k]:.2f}',
color='black', ha='center', size=7)
# 用虚线将需要标注的时间(y)连起来
for k in x_label_indexs:
axs.plot(Y[:, k], X[:, k], z[:, k], linestyle='--', linewidth=0.8, color='gray')
axs.grid()
plt.show()
if __name__ == '__main__':
x = np.arange(5)
time = np.arange(1, 15, 2)
z = np.array(
[
[0.20, 0.34, 0.38, 0.43, 0.44, 0.50, 0.61],
[0.21, 0.40, 0.38, 0.43, 0.60, 0.72, 0.75],
[0.22, 0.43, 0.44, 0.60, 0.77, 0.84, 0.92],
[0.23, 0.42, 0.44, 0.43, 0.64, 0.77, 0.86],
[0.38, 0.42, 0.43, 0.49, 0.55, 0.60, 0.81]
]
)
line_3d(time, x, z, [1, 4, 6])
版权声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:jacktools123@163.com进行投诉反馈,一经查实,立即删除!
标签:
相关文章
最新发布
- 【Python】selenium安装+Microsoft Edge驱动器下载配置流程
- Python 中自动打开网页并点击[自动化脚本],Selenium
- Anaconda基础使用
- 【Python】成功解决 TypeError: ‘<‘ not supported between instances of ‘str’ and ‘int’
- manim边学边做--三维的点和线
- CPython是最常用的Python解释器之一,也是Python官方实现。它是用C语言编写的,旨在提供一个高效且易于使用的Python解释器。
- Anaconda安装配置Jupyter(2024最新版)
- Python中读取Excel最快的几种方法!
- Python某城市美食商家爬虫数据可视化分析和推荐查询系统毕业设计论文开题报告
- 如何使用 Python 批量检测和转换 JSONL 文件编码为 UTF-8
点击排行
- 版本匹配指南:Numpy版本和Python版本的对应关系
- 版本匹配指南:PyTorch版本、torchvision 版本和Python版本的对应关系
- Python 可视化 web 神器:streamlit、Gradio、dash、nicegui;低代码 Python Web 框架:PyWebIO
- 相关性分析——Pearson相关系数+热力图(附data和Python完整代码)
- Python与PyTorch的版本对应
- Anaconda版本和Python版本对应关系(持续更新...)
- Python pyinstaller打包exe最完整教程
- Could not build wheels for llama-cpp-python, which is required to install pyproject.toml-based proj