def graph_surface(figure, axes, xs, ys, rmse_values):
    xs, ys, rmse_values = sorted_minima(xs, ys, rmse_values)
    min_rmse_value = min(rmse_values)
    min_rmse_index = rmse_values.index(min_rmse_value)
    min_rmse_x_value = xs[min_rmse_index]
    min_rmse_y_value = ys[min_rmse_index]
    min_rmse_color = '#00DD00'
    only_one_x_value = len(set(xs)) == 1
    only_one_y_value = len(set(ys)) == 1
    if only_one_x_value:
        axes.plot(xs, ys, rmse_values)
        axes.set_xlim(get_one_below_and_one_above(xs[0]))
    elif only_one_y_value:
        axes.plot(xs, ys, rmse_values)
        axes.set_ylim(get_one_below_and_one_above(ys[0]))
    else:
        axes.set_xlim(min(xs), max(xs))
        axes.set_ylim(min(ys), max(ys))
        try:
            axes.plot_trisurf(xs, ys, rmse_values, cmap=cm.CMRmap, linewidth=0)
        except __HOLE__:
            axes.plot(xs, ys, rmse_values)
    xlim = axes.get_xlim()
    ylim = axes.get_ylim()
    zlim = axes.get_zlim()
    axes.plot([min_rmse_x_value, min_rmse_x_value],
              ylim,
              zs=[zlim[0], zlim[0]],
              color=min_rmse_color, ls=':')
    axes.plot(xlim,
              [min_rmse_y_value, min_rmse_y_value],
              zs=[zlim[0], zlim[0]],
              color=min_rmse_color, ls=':')
    axes.plot([min_rmse_x_value, min_rmse_x_value],
              [min_rmse_y_value, min_rmse_y_value],
              zs=[zlim[0], min_rmse_value],
              color=min_rmse_color, ls=':')
    annotate_point(figure, axes,
                   min_rmse_x_value, min_rmse_y_value, min_rmse_value,
                   min_rmse_color)
dataset/ETHPy150Open jvanbrug/netflix/scripts/graph_rmse.py/graph_surface