One of my favorite things to do in Matplotlib is to set the color-cycle to match some colormap, in order to produce line-plots that have a nice progression of colors across the lines. Like this one:
Previously, this was one line of code using set_color_cycle
:
ax.set_color_cycle([plt.cm.spectral(i) for i in np.linspace(0, 1, num_lines)])
But, recently I see a warning:
MatplotlibDeprecationWarning:
The set_color_cycle attribute was deprecated in version 1.5.
Use set_prop_cycle instead.
Using set_prop_cycle
, I can achieve the same result, but I need to import cycler
, and the syntax is less compact:
from cycler import cycler
colors = [plt.cm.spectral(i) for i in np.linspace(0, 1, num_lines)]
ax.set_prop_cycle(cycler('color', colors))
So, my questions are:
Am I using set_prop_cycle
correctly? (and in the most efficient way?)
Is there an easier way to set the color-cycle to a colormap? In other words, is there some mythical function like this?
ax.set_colorcycle_to_colormap('jet', nlines=30)
Here is the code for the complete example:
import numpy as np
import matplotlib.pyplot as plt
ax = plt.subplot(111)
num_lines = 30
colors = [plt.cm.spectral(i) for i in np.linspace(0, 1, num_lines)]
# old way:
ax.set_color_cycle(colors)
# new way:
from cycler import cycler
ax.set_prop_cycle(cycler('color', colors))
for n in range(num_lines):
x = np.linspace(0,10,500)
y = np.sin(x)+n
ax.plot(x, y, lw=3)
plt.show()
See Question&Answers more detail:
os