2016-07-26 2 views
1

나는 텍스트 파일에서 데이터를 가져 파이썬을 사용하여 산포도를 그려 나는 이것은 이것은 내가삭제 점

mat0 = genfromtxt("herbig0.txt"); 
mat1 = genfromtxt("coup1.txt"); 
pyplot.xlim([-2,6]) 
pyplot.ylim([26,33]) 
colors=['red', 'blue','green'] 
pyplot.scatter(mat0[:,13], mat0[:,4], label = "herbig stars", color=colors[0]); 
if mat1[:,2] != 0: 
pyplot.scatter(mat1[:,2], mat1[:,9], label = "COUP data of SpT F5-M6 ", color=colors[1]); 
pyplot.scatter(mat1[:,2], mat1[:,10], label = "COUP data of SpT B0-F5", color=colors[2]); 
pyplot.legend(); 
pyplot.xlabel('Log(Lbol) (sol units)') 
pyplot.ylabel('Log(Lx) (erg/s)') 
pyplot.title('Lx vs Lbol') 
pyplot.show(); 

를 쓴 프로그램입니다 x 축 값을 0으로 포인트를 삭제할 내 if 문을 사용하지 않을 때 graph을 출력하십시오. x 축 값이 0 인 모든 청색 점을 삭제하고 싶습니다. 변경 사항을 제안하십시오. if 문을 사용하면 모든 점이 사라집니다.

enter image description here

+0

플롯 한 점을 제거하지 말고 가장 좋은 옵션은 처음부터이 값을 플롯하지 않는 것입니다. 즉 mat1 [:, 2], mat1 [:, 9]'에 필터를 적용합니다.이 열은 파란색 점의 소스입니다. – miraculixx

답변

3

데이터가 numpy 배열에 저장됩니다로서 당신은 언제나 그들을 필터링 할 수 있습니다 :

을 하나 nonzero를 사용하거나 필터링 일부 작은 문턱 값 설정 :

#Either 
mat_filter = np.nonzero(mat1[:,2]) 
#or 
mat_filter = np.abs(mat1[:,2])>1e-12 

그런 다음 영향을받은 배열에서 해당 필터를 사용할 수 있습니다.

mat1mod2 = mat1[:,2][mat_filter] 
mat1mod9 = mat1[:,9][mat_filter] 
mat1mod10 = mat1[:,10][mat_filter] 

그리고 원래의 배열 대신에 그려주십시오.

+0

그게 효과가 있어요. 답변 해 주셔서 대단히 감사합니다 !! –

+0

@MahathiChavali 당신이 알아 낸 것을 기쁘게 생각합니다. –