There are lots of ways you could potentially do this. Probably the simplest and most obvious would be to specify separate line colors for all 20 lines:
line_colors = ['r', 'g', 'b', 'c', 'm', 'y', 'k', ...]
for ii in range(20):
plt.plot(x, y, c=line_colors[ii])
Of course it would a bit of a pain to have to type out 20 different color strings!
You could also generate the colors by drawing an array of RGBA values from a colormap as in unutbu's answer, but most of the built-in colormaps contain red, so you'd have to either pick a colormap that doesn't contain red, design your own, or pick a range of float values between 0 and 1 that did not map to the red region of the colormap.
If you don't mind some colors being repeated, one potentially nicer option would be to use itertools.cycle to create a generator object that yields colors in a repeating cycle:
from itertools import cycle
color_cycle = cycle(['g', 'b', 'c', 'm', 'y', 'k'])
for ii in range(20):
if ii == 0:
plt.plot(x, y, c='r')
else:
plt.plot(x, y, c=cycle.next())
In fact, this is exactly how the default matplotlib color cycle works. Each axis object contains an itertools.cycle which sequentially changes the default color for each line that is drawn on that axis:
ax = plt.axes()
ax_color_cycle = ax._get_lines.color_cycle
print(ax_color_cycle)
# <itertools.cycle object at 0x7fdb91efae60>
print(ax_color_cycle.next())
# b
print(ax_color_cycle.next())
# g
print(ax_color_cycle.next())
# r
# etc.