如何在Plotly的3D曲面图中添加y=x平面?
给Plotly 3D曲面图添加y=x平面的实现方法
要在现有3D曲面图中添加y=x平面,你可以通过创建符合y=x关系的平面数据集,再用go.Surface将其加入图表,具体修改如下:
修改后的完整代码
import numpy as np import plotly.graph_objects as go # 定义定义域 x = np.linspace(-5, 5, 100) y = np.linspace(-5, 5, 100) X, Y = np.meshgrid(x, y) # 定义函数,避免除以零 Z = np.where(X**2 + Y**2 != 0, (X * Y) / (X**2 + Y**2), 0) # 创建交互式图表 fig = go.Figure(data=[ go.Surface(z=Z, x=X, y=Y, colorscale='Viridis', name='f(x,y)'), # 添加y=x平面 go.Surface( x=x, y=x, z=np.linspace(-0.5, 0.5, 100).reshape(-1,1), # 覆盖原函数的z值范围 colorscale=['#FF0000', '#FF0000'], # 用单一红色标识平面 opacity=0.3, # 设置透明度避免遮挡原曲面 name='y=x平面' ) ]) # 添加标题和轴配置 fig.update_layout( title='Interactive graph of f(x, y) = xy / (x^2 + y^2)', scene=dict( xaxis_title='X', yaxis_title='Y', zaxis_title='f(X, Y)' ), ) # 显示图表 fig.show()
关键实现说明
- 平面数据集构建:
y=x平面中x和y取值完全相同,z的范围需要覆盖原函数f(x,y)的取值区间(原函数z范围是[-0.5, 0.5]),用np.linspace生成对应z值并调整维度匹配x/y。 - 视觉区分设置:给平面设置单一颜色(比如红色)和较低透明度(
opacity=0.3),既能清晰看到平面位置,又不会遮挡原曲面细节。 - 添加到图表:将平面的
go.Surface对象和原曲面对象一起放入go.Figure的data列表即可。
内容的提问来源于stack exchange,提问作者Mark
相关产品推荐
相关产品推荐

