Matplotlib plots each column of my matrix a
with 4 columns by blue, yellow, green, red.
Then, I plot only the second, third, fourth columns from matrix a[:,1:4]
. Is it possible to make Matplotlib ignore blue from default and start from yellow (so my every lines get the same color as previous)?
a = np.cumsum(np.cumsum(np.random.randn(7,4), axis=0), axis=1)
lab = np.array(["A","B","C","E"])
fig, ax = plt.subplots()
ax.plot(a)
ax.legend(labels=lab )
# plt.show()
fig, ax = plt.subplots()
ax.plot(a[:,1:4])
ax.legend(labels=lab[1:4])
plt.show()
From the below figure one can infer that a plot consists of X-axis, Y-axis, plot title and the axes. By default, the color of the plot is white.
The colors used for the successive lines are the one from a color cycler. In order to skip a color in this color cycle, you may call
ax._get_lines.prop_cycler.next() # python 2
next(ax._get_lines.prop_cycler) # python 2 or 3
The complete example would look like:
import numpy as np
import matplotlib.pyplot as plt
a = np.cumsum(np.cumsum(np.random.randn(7,4), axis=0), axis=1)
lab = np.array(["A","B","C","E"])
fig, ax = plt.subplots()
ax.plot(a)
ax.legend(labels=lab )
fig, ax = plt.subplots()
# skip first color
next(ax._get_lines.prop_cycler)
ax.plot(a[:,1:4])
ax.legend(labels=lab[1:4])
plt.show()
In order to skip the first color I would suggest getting a list of the current colors by using
plt.rcParams['axes.prop_cycle'].by_key()['color']
As shown in this question/answer. Then set the color cycle for the current axes by using:
plt.gca().set_color_cycle()
Therefore your full example would be:
a = np.cumsum(np.cumsum(np.random.randn(7,4), axis=0), axis=1)
lab = np.array(["A","B","C","E"])
colors = plt.rcParams['axes.prop_cycle'].by_key()['color']
fig, ax = plt.subplots()
ax.plot(a)
ax.legend(labels=lab )
fig1, ax1 = plt.subplots()
plt.gca().set_color_cycle(colors[1:4])
ax1.plot(a[:,1:4])
ax1.legend(labels=lab[1:4])
plt.show()
Which gives:
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With