Louis Thibault
Louis Thibault

Reputation: 21400

How can I set the background color on specific areas of a figure?

I've managed to plot a series of points with the following code:

plt = pp.figure()
for i in range(spt.shape[1]):
    spktrain = spt[0,i]
    for trial in spktrain:
        non_z = np.nonzero(trial)
        non_z = non_z[0]
        pp.plot(t[non_z], trial[non_z], 'bo')

I would like to place alternating bands of white and gray background on the figure in order to separate the data from each iteration of the outer for loop. In other words, I would like the data from each "spktrain" to have it's own background color (the data does not overlap).

How can I go about changing the background color of a figure in a specific region?

Upvotes: 55

Views: 69687

Answers (1)

tom10
tom10

Reputation: 69182

You can use axhspan and/or axvspan like this:

import matplotlib.pyplot as plt

plt.figure()
plt.xlim(0, 5)
plt.ylim(0, 5)

for i in range(0, 5):
    plt.axhspan(i, i+.2, facecolor='0.2', alpha=0.5)
    plt.axvspan(i, i+.5, facecolor='b', alpha=0.5)

plt.show()

enter image description here

Upvotes: 123

Related Questions