Как заполнить область между двумя средними значениями в pyplot?

#python #matplotlib

#python #matplotlib

Вопрос:

у меня есть два массива, представляющих средние значения:

 val1 = [1.1974298934176164, 1.197608384421945, 1.1977147934109091, 1.1979125278671037, 1.1981475340039716, 1.1983540749861616, 1.1988396173314164, 1.1994043067627347, 1.1999790418677156, 1.2007222804957223, 1.2012619384358896, 1.2016847229621008, 1.2020040000740846, 1.2023233878281563, 1.2025751764174386]
val2 = [1.1970508333333332, 1.197240833333333, 1.1974208333333332, 1.1976458333333333, 1.1978491666666666, 1.1980808333333333, 1.1984641666666667, 1.1989441666666667, 1.19948, 1.20015, 1.2006533333333334, 1.2011866666666666, 1.2015658333333332, 1.2020233333333332, 1.2024949999999999]
 

Я рисую их так:

 import matplotlib.pyplot as plt
plt.plot(sma12, color="darkred", linewidth=1, alpha=0.5)
plt.plot(ema12, color="darkred", linewidth=1, alpha=0.5)
plt.axis('off')
plt.autoscale()
 

Это результат:

Два средних

Какой самый простой способ заполнить пространство между этими двумя средними значениями, чтобы получить что-то вроде ленты? Я пытался использовать plt.fill_between() (matplotlib docs), но у меня нет координат x.

Ответ №1:

fill_between(x,y1,y2) поэтому я указал список каждого из них. Это то, что вы ищете.

 import matplotlib.pyplot as plt
import numpy as np

val1 = [1.1974298934176164, 1.197608384421945, 1.1977147934109091, 1.1979125278671037, 1.1981475340039716, 1.1983540749861616, 1.1988396173314164, 1.1994043067627347, 1.1999790418677156, 1.2007222804957223, 1.2012619384358896, 1.2016847229621008, 1.2020040000740846, 1.2023233878281563, 1.2025751764174386]
val2 = [1.1970508333333332, 1.197240833333333, 1.1974208333333332, 1.1976458333333333, 1.1978491666666666, 1.1980808333333333, 1.1984641666666667, 1.1989441666666667, 1.19948, 1.20015, 1.2006533333333334, 1.2011866666666666, 1.2015658333333332, 1.2020233333333332, 1.2024949999999999]

plt.fill_between(np.arange(len(val1)), val1, val2, interpolate=False)

plt.axis('off')
plt.autoscale()
plt.show()
 

введите описание изображения здесь

Комментарии:

1. Это правильный и полезный ответ. Спасибо!