fig = plt.figure(figsize=(9, 6))
ax = fig.add_subplot(111, projection='3d')
surf = ax.plot_surface(input_feature_matrix, target_grid_values, transformed_feature_matrix, cmap='viridis', edgecolor='none', alpha=0.85, rstride=2, cstride=2)
global_min_value = loss_function_2d(2, 3)
local_min_value = loss_function_2d(-0.5, -0.5)
# 标记点
# 执行 `ax.scatter`,生成当前步骤需要的结果或可视化。
ax.scatter(2, 3, global_min_value, color='red', s=120, zorder=10, depthshade=False)
# 执行 `ax.scatter`,生成当前步骤需要的结果或可视化。
ax.scatter(-0.5, -0.5, local_min_value, color='orange', s=120, zorder=10, depthshade=False)
# 执行 `ax.set_title`,生成当前步骤需要的结果或可视化。
ax.set_title(title_text, fontsize=46)
# 执行 `ax.set_xlabel`,生成当前步骤需要的结果或可视化。
ax.set_xlabel(xlabel_text, fontsize=40, labelpad=12)
# 执行 `ax.set_ylabel`,生成当前步骤需要的结果或可视化。
ax.set_ylabel(ylabel_text, fontsize=40, labelpad=12)
# 执行 `ax.set_zlabel`,生成当前步骤需要的结果或可视化。
ax.set_zlabel(zlabel_text, fontsize=40, labelpad=12)
ax.tick_params(labelsize=38)
ax.set_xticks([-1, 2, 5])
ax.set_yticks([-1, 2, 5])
ax.set_zticks([0, 10, 20])
# 执行 `ax.view_init`,生成当前步骤需要的结果或可视化。
ax.view_init(elev=30., azim=120)
fig.canvas.draw()
global_x, global_y, _ = proj3d.proj_transform(2, 3, global_min_value, ax.get_proj())
local_x, local_y, _ = proj3d.proj_transform(-0.5, -0.5, local_min_value, ax.get_proj())
annotation_box = dict(boxstyle='round,pad=0.18', facecolor='white', edgecolor='none', alpha=0.92)
annotation_arrow = dict(arrowstyle='-', color='#555555', linewidth=2.5)
ax.annotate(global_min_text, xy=(global_x, global_y), xytext=(-92, -64), textcoords='offset points',
color='#A61B29', fontsize=42, ha='center', va='top', bbox=annotation_box,
arrowprops=annotation_arrow, zorder=20)
ax.annotate(local_min_text, xy=(local_x, local_y), xytext=(76, 46), textcoords='offset points',
color='#8A4A00', fontsize=42, ha='center', va='bottom', bbox=annotation_box,
arrowprops=annotation_arrow, zorder=20)
# 执行 `fig.tight_layout`,生成当前步骤需要的结果或可视化。
fig.tight_layout()
# 执行 `plt.show`,生成当前步骤需要的结果或可视化。
plt.show() # 展示当前步骤的结果。