One solution is to provide lists to the quiver function:
import matplotlib.pyplot as plt
I6 = [
[(0.5, -0.5), (1.0, 0.0), 10],
[(0.5, -0.5), (0.0, -1.0), 20],
[(1.5, -0.5), (0.0, -1.0), 30],
[(0.5, -1.5), (1.0, 0.0), 40]
]
x = [elem[0][0] for elem in I6]
y = [elem[0][1] for elem in I6]
dx = [elem[1][0] for elem in I6]
dy = [elem[1][1] for elem in I6]
u = [elem[2] for elem in I6]
plt.quiver(x, y, dx, dy, u, scale=1, units="xy", scale_units="xy")
plt.show()

EDIT
With discrete colorbar:
import matplotlib
import matplotlib.pyplot as plt
I6 = [
[(0.5, -0.5), (1.0, 0.0), 10],
[(0.5, -0.5), (0.0, -1.0), 20],
[(1.5, -0.5), (0.0, -1.0), 30],
[(0.5, -1.5), (1.0, 0.0), 40]
]
x = [elem[0][0] for elem in I6]
y = [elem[0][1] for elem in I6]
dx = [elem[1][0] for elem in I6]
dy = [elem[1][1] for elem in I6]
u = [elem[2] for elem in I6]
cmap = matplotlib.cm.get_cmap("plasma", len(u))
plt.quiver(x, y, dx, dy, u, scale=1, units="xy", scale_units="xy", cmap=cmap)
plt.colorbar()
plt.show()

With standard colorbar:
import matplotlib.pyplot as plt
I6 = [
[(0.5, -0.5), (1.0, 0.0), 10],
[(0.5, -0.5), (0.0, -1.0), 20],
[(1.5, -0.5), (0.0, -1.0), 30],
[(0.5, -1.5), (1.0, 0.0), 40]
]
x = [elem[0][0] for elem in I6]
y = [elem[0][1] for elem in I6]
dx = [elem[1][0] for elem in I6]
dy = [elem[1][1] for elem in I6]
u = [elem[2] for elem in I6]
plt.quiver(x, y, dx, dy, u, scale=1, units="xy", scale_units="xy")
plt.colorbar()
plt.show()
