Как показать доверительный интервал в python с помощью matplotlib? - PullRequest
1 голос
/ 20 апреля 2020

Мне нужно показать доверительный интервал, как на этом изображении:

enter image description here
, но я не знаю, как это сделать. Я пытался сделать lb.fill_between(x, (y1-ci), (y1+ci), color = 'b', alpha = 0.1), но он возвращает ошибку: AttributeError: 'list' object has no attribute 'fill_between'.
Это мой код:

import matplotlib.pyplot as plt


x = [10, 100, 1000]
y1 = [215103, 22824279.7, 22063128311]
y2 = [211298.5, 21315505.2, 20563930722]

plt.subplot(2, 2, 1)

ci = 1300
#la = plt.plot(x,y,'b*', label = 'normal')
lb = plt.plot(x,y1, '#FA8072', label = 'LI')
lc = plt.plot(x,y2, '#7FFFD4', label = 'LU')
plt.legend(loc = 'upper left')
plt.title("L1-dcache-loads")
plt.xscale("log")

Заранее спасибо!

1 Ответ

1 голос
/ 20 апреля 2020

Используйте fill_between следующим образом:

plt.figure()
plt.fill_between(x, y1, y2, edgecolor='g', facecolor='g', alpha=0.3)

y1 - это ваша кривая нижней границы, а y2 - ваша кривая верхней границы. Вывод:

bounds

В вашем примере:

plt.figure()
plt.plot(x,y1, '#FA8072', label = 'LI')
plt.fill_between(x, np.array(y1)-ci, np.array(y1)+ci, edgecolor='r', facecolor='r', alpha=0.3)
plt.plot(x,y2, '#7FFFD4', label = 'LU')
plt.fill_between(x, np.array(y2)-ci, np.array(y2)+ci, edgecolor='g', facecolor='g', alpha=0.3)
plt.legend(loc = 'upper left')
plt.title("L1-dcache-loads")
plt.xscale("log")

Но интервалы слишком малы, чтобы их увидеть.

updated

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...