简体   繁体   中英

Coloring axvspan from range of colors (Python)

Background

I am trying to plot consecutive colored areas in Python using matplotlib . I use (imagine i being some iteration variable)

axvspan(from_x[i], to_x[i], color=my_color[i])

to plot this.

Now, I need a general way to say "plot from green to increasingly more red given N areas to be plotted next to each other".

i = 0: area is green,
i = 1: area is green but with some red,
etc.
i = N: area is red.

You get the point.

Question Sure, if N was fixed I could just manually put in the rgb values, but it is not. I have looked up ways to do this if plotting lines etc. but I am not sure how to do this for axvspan(...) and specifically how to get the green to red feature. Most examples I found was regarding color maps which I am not sure I want to use here.

Your help is much appreciated.

You can use an (r,g,b) tuple for the color, so we can just increase the red and decrease the green as we move through the loop.

Obviously, you can manipulate N and the from_x and to_x arrays to suit your needs.

import matplotlib.pyplot as plt
import numpy as np

fig,ax = plt.subplots(1)

N = 20

from_x = np.linspace(0,0.95,N)
to_x = from_x + 0.05

for i in range(N):
    ri = float(i)/float(N)
    gi = 1.-ri
    bi = 0.

    ax.axvspan(from_x[i], to_x[i], color=(ri,gi,bi))

plt.show()

在此处输入图片说明

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM