-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy path3d_plot.py
More file actions
57 lines (41 loc) · 1.53 KB
/
Copy path3d_plot.py
File metadata and controls
57 lines (41 loc) · 1.53 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
"""
项目: Plotly基础可视化
数据路径: data/3d-line1.csv, data/mt_bruno_elevation.csv
实现: 3D线图, 散点图, 曲面
处理: Pandas数据清洗 + Plotly交互式绘图
数据源: 开源CSV(README标注来源)
"""
# 导入数据分析与可视化所需依赖库
import pandas as pd
import plotly.graph_objects as go
import plotly.express as px # 快速极简绘图,适合 3D、一键生成图表
import numpy as np
# ========== 1.3D点、线图 ==========
data = pd.read_csv('data/3d-line1.csv')
# 构建三维散点,可切换mode='lines'绘制纯连线, 也可mode='markers'绘制散点图
line = go.Scatter3d(x = data['x'], y = data['y'], z = data['z'], marker={'size': 2, 'color': 'red'})
fig1 = go.Figure(line)
fig1.show()
# 使用px快速生成三维散点图
fig2 = px.scatter_3d(data, x='x', y='y', z='z')
fig2.update_traces(marker={'size':2}) # 统一全部圆点尺寸为2
fig2.show()
# ========== 2.3D曲面图 ==========
data2 = pd.read_csv('data/mt_bruno_elevation.csv')
del data2['index'] # 数据处理
# 读取表格数值作为高度数据,绘制三维高程曲面图
height = data2.values
surface = go.Surface(z = height)
fig3 = go.Figure(surface)
fig3.show()
# ========== 3.自定义3D曲面图 ==========
# 生成网格数据,绘制抛物面3D曲面图 z=x²+y²
x = np.arange(-5, 6)
y = np.arange(-5, 6)
# 生成二维坐标网格
xv, yv = np.meshgrid(x, y)
z = xv ** 2 + yv ** 2 # 曲面函数:抛物面
# 构造3D曲面对象
surface4 = go.Surface(x = xv, y = yv, z = z)
fig4 = go.Figure(surface4)
fig4.show()