如何在matplotlib 3D绘图中将网格线延伸至数据区域
3D绘图内部网格线实现方案
Matplotlib默认3D轴仅在背景面板显示网格,要将网格延伸至数据区域,可通过手动绘制辅助线实现。针对你的场景(所有数据点z值为1),优先在对应z平面绘制网格即可突出数据分布特征。
修改后完整代码
import numpy as np import matplotlib.pyplot as plt fig = plt.figure(figsize = (10,10)) ax = plt.axes(projection ='3d') x, y, z = np.array(list1), np.array(list2), np.array(list3) c = x+y ax.scatter(x, y, z, c=c) # 新增:在z=1平面绘制内部网格 x_ticks = ax.get_xticks() y_ticks = ax.get_yticks() z_level = 1 # 绘制平行于y轴的网格线 for x_val in x_ticks: ax.plot([x_val, x_val], [y_ticks.min(), y_ticks.max()], [z_level, z_level], color='lightgray', alpha=0.4) # 绘制平行于x轴的网格线 for y_val in y_ticks: ax.plot([x_ticks.min(), x_ticks.max()], [y_val, y_val], [z_level, z_level], color='lightgray', alpha=0.4) ax.set_xlabel('x') ax.set_ylabel('y') ax.set_zlabel('z') ax.set_title(f'Title') plt.show()
可选调整说明
- 若需要全空间的三维内部网格,可遍历z轴刻度,对每个z层级都绘制对应平面的网格线
- 可自行调整
color(网格颜色)、alpha(透明度)、linestyle(线型)参数,适配你的可视化风格 - 若后续数据的z值分布有变化,修改
z_level参数即可对应调整网格所在的平面
内容的提问来源于stack exchange,提问作者Tim Kirkwood
相关产品推荐
相关产品推荐

