2017-02-23 5 views
0

여기에 몇 가지 점에 대해 curve_fit을 사용하여 sin 함수를 맞추려고합니다. 피트와 포인트를 플로팅 할 때 설명 할 방법이 없기 때문에 일부 이미지를 게시하는 것이 좋습니다.도트 사이에 선을 연결하는 파이썬 플롯 문제

다음 코드 라인의 수율 사용 : 선 스타일을 사용

plt.plot(phase_min, sinusoidal_function(phase_min, *popt), '.', lw=3) 

를 '-'내가 얻을 :

가 어떻게 그냥 망할를 가질 수 있습니다 그 사이에있는 모든 도트가 아니라 각각의 인접한 도트를 연결하는 라인? 감사합니다.

+0

'phase_min'을 (를) 분류 했습니까? –

+0

나는 내가 필요하다고 생각하지 않는다. phase_min은 정렬 된 단계에서 따릅니다. 나는 그것이 행동을 물려받은 것 같아? (Py 초보자는 여기) – nyw

+1

나는 그것이 이미 분류되어 있다고 생각하지 않는다. 당신이 그것을 밖으로 인쇄하고 확인하실 수 있습니다. 또한 커브 피팅 후에 원래의 변수 값에 대해 곡선을 그릴 필요가 없으므로 플롯 할 범위의 x 값을 만들어야합니다. 'x = np.arange (0, 1, 0.001), y = sinusoidal_function (x, * popt), plt.plot (x, y)' –

답변

1

당신은 np.argsort을 사용할 수

order = np.argsort(x) 
xsorted = x[order] 
ysorted = y[order] 

xy는 오렌지 점의 좌표입니다.

+0

나는 이해하고 있는지 잘 모르겠다. phase_min을 정렬하면 나에게 이상한 것이 생깁니다. http://imgur.com/a/yrEbx – nyw

+0

트릭은 _rearranging_'x'와'y'입니다. 이 두 가지 중 하나만 정렬하면 좌표 쌍을 분리하고 이상한 것이 예상됩니다. 'phase_min'을 정렬하고 yout 사인 파형 함수를 정렬 된'phase_min'에 적용하고 음모에서 두 데이터 인수에 대해 정렬 된 것을 사용하십시오. –

+0

나는 phase_min.sort()를 사용하여 그 작업을 수행했으며 주석 위의 링크에 플롯을 얻습니다. – nyw

1

matplotlib에 줄을 그릴 때 제공되는 것과 동일한 순서로 점을 자동으로 연결합니다.

import matplotlib.pyplot as plt 
plt.plot([1,3,2], [1,2,3]) 

enter image description here

귀하에 문제가 phase_min가 정렬되지 않고 matplotlib 순서대로 데이터 포인트에 연결하려는 것입니다 : 아래의 예를 참조하십시오. 사실, 이미 맞는 함수가 있기 때문에 원래 데이터를 사용하여 함수를 그릴 필요가 없습니다. 다음과 같이 선을 그릴 데이터 포인트를 정의 할 수 있습니다. 이 방법으로 플롯을 만들 때만큼 데이터 포인트를 가질 수 있으므로 원래 데이터 포인트를 사용하여 플롯을 작성하는 경우보다 선이 부드럽게됩니다.

x=np.arange(0, 1, 0.001) 
y=sinusoidal_function(x, *popt) 
plt.plot(x,y) 
+0

오, 이제 알겠습니다 :) 이것은 의미가 있습니다. 내가 이해하지 못하는 이유는 phase_min을 정렬하면 여전히 이상한 결과가 나오는 이유입니다. 이것은 point to point 연결을 처리해야하고, 모든 것이 순서대로되어야합니다. 내가 잘못? – nyw

+0

@nyw 피팅 프로세스 전후에'phase_min'을 정렬합니까? 피팅 전에 정렬하는 경우'phase_min'과'y' 값 사이의 일치가 변경되지 않도록해야합니다. 따라서 플롯을 만들기 전에 피팅 과정을 거쳐야합니다. 여전히 위의 방법이 선호되어야합니다. –