#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. Это правильный и полезный ответ. Спасибо!