Я создаю функцию, которая берет временные ряды для стоимости недвижимости, вычисляет прибыль по сравнению с инвестициями с отставанием в 2, 5 и 10 лет, а затем отображает эти прибыли. Мой временной ряд имеет дату и время в качестве индекса и только один столбец с именем «значение» со значениями, например:
Это моя функция:
def gain(ts):
roi_2 = (ts - ts.shift(periods=24))/ts.shift(periods=24)*100
roi_5 = (ts - ts.shift(periods=60))/ts.shift(periods=60)*100
roi_10 = (ts - ts.shift(periods=120))/ts.shift(periods=120)*100
plt.figure(figsize = (12,8))
ax = plt.subplot(111)
ax.spines["top"].set_visible(False)
ax.spines["right"].set_visible(False)
ax.plot(roi_2, label='Return in 2 Years')
ax.plot(roi_5, label='Return in 5 Years')
ax.plot(roi_10, label='Return in 10 Years')
ax.set_ylabel('Gain Percentage')
ax.set_xlabel('Year')
plt.yticks([-10,0,10,25,50,75,100,125,150,175,200], [str(x) + "%" for x in [-10,0,10,25,50,75,100,125,150,175,200]], fontsize=10)
ax.grid(which='major', axis='y', linestyle= "--", lw=0.5, color="black", alpha=0.3)
plt.title('Mean Zillow Home Value Index (ZHVI) - ROI Over Time Invested', fontsize=14)
plt.legend()
plt.show()
return roi_2, roi_5, roi_10
Когда я называю это передачей моего временного ряда, я получаю следующее:
То, что я пытаюсь сделать, это как-то выделить момент, когда доход отрицательный - это убыток. Это будут любые значения под 0-й строкой на графике. Я пытался заполнить весь график при y = 0 или покрасить линии в другой цвет, когда они окажутся ниже 0, но все коды, которые я пробовал для этого, не работают. Я думаю, что моя основная трудность заключается в том, чтобы получить x и y для этих точек? Я не уверен, что я делаю неправильно, но я уверен, что это просто, я просто мало знаю о временных рядах и имею данные в качестве индекса, чтобы понять это.
Я считаю, что подойдет простой ax.fill_between(x, y1, 0)
, но я не могу использовать его в своей функции, потому что не могу понять, как установить для нее x и y1...
ax.fill_between(roi_2.index, roi_2.value<0, -20, color='red', alpha=.2)
единственная незначительная проблема заключается в том, что это заполняло весь график между 0 и -20, а не только область между сюжетными линиями и 0... - person Giovanna Fernandes   schedule 20.10.2019