I use a code to plot3D gradient (the vector of the partial derivatives) of a function f to surface
z=x+y-xy
such that
fieldArrow[pos_, field_, scale_] := {Hue[Norm[field]],
Arrowheads[.02], Arrow[Tube[{{pos, pos + scale field}}]]};
grid = Table[{x , y}, {y, -5, 5, 5}, {x, -5, 5, 5}];
gridData = Table[x + x - x y, {y, -5, 5, 5}, {x, -5, 5, 5}];
fieldX = -DerivativeFilter[gridData, {0, 1}, InterpolationOrder -> 3];
fieldY = -DerivativeFilter[gridData, {1, 0}, InterpolationOrder -> 3];
data3D = MapThread[Append[#1, #2] &, {grid, gridData}, 2];
vectorField =
MapThread[
fieldArrow[Append[#1, #2], {#3, #4, 0}, 3] &, {grid, gridData,
fieldX, fieldY}, 2];
arrows = Graphics3D[vectorField];
Show[ListPlot3D[Flatten[data3D, 1], MeshFunctions -> (#3 &)], arrows]


VectorPlot3D[]? – J. M.'s missing motivation Sep 02 '17 at 05:41gridandgridDatadelta from5to maybe1; it was0.5in the answer you copied. (I mean the last5in{y, -5, 5, 5}and in the one forx.) – Michael E2 Sep 03 '17 at 20:45