카테고리 없음

matplotlib 그래프에서 로그스케일 (symlog ) 필요한 이유

데이터랑 2025. 5. 17. 22:36

 

 

데이터분석을 위하여 데이터를 시각화할 필요가 있는데 많은 데이터를 한 번에 그래프로 그리는 경우 y축 값의 범위가 커지면서

y축 값의 가독성이 떨어지는 경우가 발생한다.

 

이때 이를 해결하기 위한 방법 중 하나가  로그스케일이다.

 

예를 들어 1500 개 x축을 하나의 그래프에 보여줄 때 Y값에 이상점이 포함된 경우 이상점 때문에 평균적인 데이터 값들이 잘 안 보이는 현상이 발생한다 

 

그래프 1 - 로그스케일 적용 전

 

아래는 위와 동일한 데이터에 로그스케일을 적용해서 그린 그래프이다.

 

설정값 변경 예제 1 :     axt.set_yscale("symlog", linthresh=100, linscale=1)로 설정을 추가 

 

위의 그래프1 에서는 확인하기 어려웠던 보조축의 바그래프가  나타난 것을 확인할 수 있다.

그래프 2 - 로그스케일 적용 후

 

 

그런데 이때 고민해야 할 것은  linthresh와 linscale 값을 얼마로 조정하느냐의 문제이다.

일단 위의 예제에서 linthresh를 100으로 설정했는데 이 기준은 내가 자세히 확인하고 싶은 범위 값으로 설정하면 좋을 듯하다.   

그 범위 이외의 값은 아 큰 값이구나, 적은 값이구나로 만 판단하면 되는 경우의 그 범위를 설정값으로 설정하면

그 범위 내 값은 선형스케일로 보이게 되고 그 범위밖은 로그스케일로 보이게 된다.

 

다음은 라인스케일 linscale 을 0.5부터 2까지 조정하면서 동일한 데이터를 그려본 예제이다.

내가 보고자 하는 데이터 범위의 그래프 축의 크기가 달라지는 것을 알 수 있다.

 

그래프3 - 라인스케일 적용

 

 

  설정값 변경 예제 1 :    axt.set_yscale("symlog", linthresh=500, linscale=5)로 설정을 변경 

 

설정값 변경 예제  2:     axt.set_yscale("symlog", linthresh=1000, linscale=5) 로 설정을 변경 )

 

 

사실 내가 직접 데이터를 분석하는 입장이 아니면 이런 차이가 쉽게 눈에 들어오지는 않을것 같다.

 

나의 경험담 ^^ 


 

 

728x90