Jeśli chodzi o podanie sprytnego argumentu "kolor =", obawiam się, że nie istnieje on zgodnie z moją najlepszą wiedzą. Można to zrobić ręcznie, ustawiając kwadratową linię dla każdego koloru i zmieniając przesunięcie. Wypełnienie między nimi poprawnych kolorów daje rainbowish To sprawia, że projekt zabawa nauczyć się Pythona, ale jeśli nie masz ochoty próbuje tutaj jest przykład:
import matplotlib.pyplot as plt
import numpy as np
x = np.linspace(0, 100, 50)
y_old = -(x-50)**2 + 2500
for delta, color in zip([2250, 2000, 1750, 1500, 1250, 1000], ["r", "orange", "g", "b", "indigo", "violet"]):
y_new = -(x-50)**2 + delta
plt.plot(x, y, "-k")
plt.fill_between(x, y_old, y_new, color=color)
y_old = y_new
plt.ylim(0, 2500)
plt.show()
Jak można zauważyć, to nie wygląda jak tęcza. Dzieje się tak dlatego, że funkcja, której używamy, jest kwadratowa, w rzeczywistości tęcza składa się z okręgów o różnych promieniach (jest tu także fajny projekt matematyki!). Jest to również możliwe do sparsowania przez matplotlib, spróbuję tego i sprawię, że będziesz mógł wydrukować więcej niż 7 kolorów w tęczy, np. Wydrukować 1000 kolorów obejmujących całe spektrum, aby naprawdę wyglądać jak tęcza!
http://stackoverflow.com/questions/11564273/matplotlib-continuous-colormap-fill-between-two-lines – tacaswell