0
비대칭 에러 막대가있는 plt.errorbar
을 사용하여 for 루프를 사용하여 일부 배열을 플롯하려고합니다. 이 예제에서는 인덱스없이 배열을 사용하는 것이 더 쉬울 것이라는 것을 알고 있지만 인덱스 i에 대한 조건이있는 다른 코드에서 plt.errorbar
의 인덱스를 사용하고 싶습니다.matplotlib plot for 인덱스가있는 for 루프의 비대칭 에러 막대
import numpy as np
import matplotlib.pyplot as plt
x=[ 0.007206, 0.043695, 0.372777, 0.464819, 0.337386, 0.249215, 0.395453,
0.222331, 0.11715, 0.101464, 0.645596, 0.228634, 0.187252, 0.283026,
0.596368, 0.019066, 0.300215, 0.174883, 0.331613, 0.175409, 0.858567, 0.895389]
y=[ 0.327811, 33.3177, 1.36996, 41.9717, 1.18497, 1.05182, 2.28229,
0.424775, 1.11758, 4.5135, 2.70709, 1.26611, 10.8293, 4.92649,
31.4483, 0.403496, 1.14471, 1.72301, 12.081, 0.501048, 13.6858,
4.58709 ]
xel=[ 0.034065, 0.096869, 0.046961, 0.13575, 0.086615, 0.070706, 0.068376,
0.132277, 0.12079, 0.102303, 0.048192, 0.070823, 0.067665, 0.07266,
0.093411, 0.040662, 0.089356, 0.098089, 0.137559, 0.146229, 0.038649,
0.030372]
xeu=[ 0.032612, 0.092047, 0.04424, 0.151329, 0.077828, 0.066373, 0.065701,
0.123756, 0.09371, 0.086466, 0.047322, 0.069837, 0.070206, 0.058787,
0.088777, 0.045837, 0.098174, 0.105, 0.148259, 0.14845, 0.133334,
0.104611]
for i in range(21):
plt.errorbar(x[i], y[i], xerr=[xel[i],xeu[i]], fmt='.')
plt.show()
출력 오류는 다음과 같습니다 : 또한
ValueError: err must be [ scalar | N, Nx1 or 2xN array-like ]
내가 그것을 작동 대칭 errorbars (plt.errorbar(x[i], y[i], xerr=xallel[i])
)을 시도 할 경우
이
은 예제 코드입니다. 그래서 나는 문제가 어디 있는지 이해하지 못한다.루프 상단에 색인 i
의 조건을 추가해야하므로 색인이 필요합니다. 예 :
for i in range(21):
if y[i]<1.0:
plt.errorbar(x[i], y[i], xerr=[xel[i], xeu[i]], fmt='.', color='red')
else:
plt.errorbar(x[i], y[i], xerr=[xel[i], xeu[i]], fmt='.', color='b')
어떻게 해결할 수 있습니까? 저는 아나콘다 파이썬 3.6을 사용하고 있습니다.
xerr=[[xel[i]],[xeu[i]]]
당신은하기 matplotlib 일반적으로뿐만 아니라 루프를 방지 할 수 있습니다 한 번에 여러 값을 플로팅 지원 :
예 인덱스없이 모든 데이터를 플로팅 할 수 있지만 인덱스가 필요하다는 것을 알고 있습니다. 이것은 복잡한 문제에 대한 간단한 예입니다 ... –
위의 코드는 인덱스없이 플롯 할 수있게합니다. – GWW
죄송하지만 인덱스에 조건을 추가하면 (예 :'if y [i] <1.0'), 이 솔루션은 y 배열의 모든 점을 그립니다. –