matplotlib 从颜色范围中着色轴跨度

wj8zmpe1  于 2023-06-23  发布在  其他
关注(0)|答案(1)|浏览(71)

背景

我尝试用matplotlibPython中绘制连续的彩色区域。我使用(想象我是某个迭代变量)

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

来策划这个
现在,我需要一个通用的方法来说“从绿色到越来越多的红色给定N个区域被绘制在彼此旁边”。

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

你明白我的意思了。

问题当然,如果N是固定的,我可以手动输入rgb值,但它不是。我已经找到了方法来做到这一点,如果绘制线等。但我不确定如何为Axvspan(...)做到这一点,以及具体如何获得绿色到红色的功能。我发现的大多数例子都是关于彩色Map的,我不确定我想在这里使用。

kuhbmx9i

kuhbmx9i1#

你可以使用(r,g,b)元组来表示颜色,这样我们就可以在循环中增加红色,减少绿色。
显然,您可以根据需要操作Nfrom_xto_x数组。

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()

相关问题