파이썬 matplotlib 로 정규분포 여러개 한꺼번에 그리는방법
조회수 1053회
파이썬으로 다음과 같은 함수식을 만들어 그래프를 그렸습니다.
import numpy as np
import matplotlib.pyplot as plt
x = np.arange(0, 10.1, 0.2)
a = np.zeros(100*51)
def f(x):
y = np.exp(-0.5*x)*np.sin(x)+np.random.normal(1,0.005,51)
return y
print(f(x))
# ->[0.99605648 1.16898336, ..., 0.9965857 0.99681586]
line = plt.plot(x,f(x))
plt.setp(line, color='r', linewidth=0.2)
plt.show()
기존의 함수에 정규분포를 넣어 노이즈가 들어간 그래프를 만들었는데 이러한 것을 100개 만들고 싶습니다. 예를 들어서 평균은 그대로 두고 분산값만 0.0005 - 0.0015로 바꿔가면서 각 분산에 대한 그래프를 그려서 최종적으로 100개의 그림이 저 한장에 다 겹쳐서 나오게 하는 방법이 있을까요?
for문을 이용하면 될 것 같긴 한데 잘 모르겠습니다.
1 답변
-
import numpy as np import matplotlib.pyplot as plt x = np.arange(0, 10.1, 0.2) a = np.zeros(100 * 51) def f(x, s): y = np.exp(-0.5 * x) * np.sin(x) + np.random.normal(1, s, 51) return y for i in range(5, 106): s = i * 0.0001 plt.grid(True) line = plt.plot(x, f(x, s), linewidth=0.2) print(line) # plt.setp(line, color='r', linewidth=0.2) plt.show()
f함수에 분산인자를 하나 추가하면 됩니다.
100개를 다 그리면 좀 알아보기 힘드네요.
댓글 입력