Матрицы ошибок Matplotlib отсутствуют
Я пытаюсь создать диаграмму рассеяния с ошибками в matplotlib. Ниже приведен пример того, как выглядит мой код:
import matplotlib.pyplot as plt
import numpy as np
import random
x = np.linspace(1,2,10)
y = np.linspace(2,3,10)
err = [random.uniform(0,1) for i in range(10)]
plt.errorbar(x, y,
yerr=err,
marker='o',
color='k',
ecolor='k',
markerfacecolor='g',
label="series 2",
capsize=5,
linestyle='None')
plt.show()
Проблема заключается в том, что выведенный сюжет не содержит крышек вообще! ![enter image description here]()
Для чего это стоит, я на Ubuntu 13.04, Python 2.7.5 | Anaconda 1.6.1 (64-бит) | и Matplotlib 1.2.1.
Может ли это быть скрытый rcparam, который необходимо перезаписать?
Ответы
Ответ 1
Что сработало для меня, было добавление этого (в соответствии с: Как установить ширину строки в квадратных скобках ошибок в matplotlib):
(_, caps, _) = plt.errorbar(x,y, yerr=err, capsize=20, elinewidth=3)
for cap in caps:
cap.set_color('red')
cap.set_markeredgewidth(10)
Ответ 2
Это связано с rcParams в matplotlib. Чтобы решить эту проблему, добавьте следующие строки в начале вашего скрипта:
import matplotlib
matplotlib.rcParams.update({'errorbar.capsize': 2})
Это также работает с plt.bar().
Ответ 3
Небольшое упрощение ответа astromax:
plt.errorbar(x,y, yerr=err, capsize=20, elinewidth=3, markeredgewidth=10)
Кажется, что каким-то образом markeredgewidth по умолчанию иногда равен 0.