如何在Matplotlib 3D曲面图上添加自定义颜色网格线以方便数值追踪
matplotlib 3D曲面添加自定义网格线解决方案
完全可以实现你要的效果,只需要在plot_surface方法中显式指定网格线相关参数即可。
核心修改点
在调用plot_surface时新增两个参数:
edgecolor:自定义曲面网格线的颜色,传入'k'代表黑色,也可填入任意合法的matplotlib颜色值(如'#000000'、'blue'等)linewidth:自定义网格线的粗细,数值越大线条越清晰
修改后完整代码
import numpy as np from matplotlib import cm from mpl_toolkits.mplot3d import Axes3D import matplotlib.pyplot as plt def fun(x, y): return 1/(1+np.exp(-x-y)) n=400 x = np.linspace(-3.0, 3.0, n) y = np.linspace(-3.0, 3.0, n) X, Y = np.meshgrid(x, y) zs = np.array(fun(np.ravel(X), np.ravel(Y))) Z = zs.reshape(X.shape) fig, ax = plt.subplots(nrows=2, ncols=2, subplot_kw={'projection': '3d'}) ax[0,0].plot_wireframe(X, Y, Z, rstride=40, cstride=40) # 新增edgecolor和linewidth参数设置网格线 ax[0,1].plot_surface(X, Y, Z, rstride=40, cstride=40, color='m', edgecolor='k', linewidth=0.5) ax[1,0].plot_surface(X, Y, Z, rstride=12, cstride=12, cmap='coolwarm', edgecolor='k', linewidth=0.3) ax[1,1].plot_surface(X, Y, Z, rstride=20, cstride=20, cmap=cm.hot, edgecolor='k', linewidth=0.4) for axes in ax.flatten(): axes.set_xticks([-3,-2, -1, 0, 1, 2,3]) axes.set_yticks([-3,-2, -1, 0, 1, 2,3]) axes.set_zticks([0, 0.2,0.4,0.6,0.8, 1]) fig.tight_layout() plt.show()
额外调整说明
如果需要更密集的网格方便定位,调小rstride、cstride的数值即可;如果需要网格线更醒目,调大linewidth的数值即可。
内容的提问来源于stack exchange,提问作者BDG
相关产品推荐
相关产品推荐

