파이썬 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 답변

  • 좋아요

    0

    싫어요
    채택 취소하기
    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개를 다 그리면 좀 알아보기 힘드네요.

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)