2016-11-09 1 views
0

파이썬 3.5 및 Seaborn으로 만든 swarmplot을 일부 데이터 (다른 클래스에 저장된 열 lables로 팬더 데이터 프레임 df에 저장됩니다.)에서 살펴 보겠습니다. 문제가 지금은 단지) 줄거리를 보면 : 그것은 몇 년에 걸쳐 진행되므로 y 축에 로그 스케일로 그려 경우 Python, Seaborn : 로그 스웜 플롯에 갑작스런 간격이 있습니다.

Linear y axis

ax = sns.swarmplot(x=self.dte.label_temperature, y=self.dte.label_current, hue=self.dte.label_voltage, data = df) 
지금 데이터를 더 읽을 수 있습니다. 그럼 로그에 스케일링을 변경할 수 있습니다 :

ax.set_yscale("log") 
ax.set_ylim(bottom = 5*10**-10) 

Log y axis

잘 나는 떼의 간격에 문제가 있습니다. 선형 축을 염두에두고 그 점들이 겹쳐서는 안되기 때문에 거기에 있었던 것 같아요. 그러나 지금 그들은 이상하게 보입니다. 그리고 4 개의 똑같은보고있는 떼에서 충분한 공간이 있습니다. 제 질문은 : Seaborn이 도트의 위치를 ​​다시 계산하여 더보기 좋은 떼를 만들도록하려면 어떻게해야합니까?

+7

사람들이 대답 할 시간을 자원 봉사 질문을 할 때는 가능한 한 쉽게 도움을주는 것이 가장 좋습니다. 누군가가 머리 꼭대기에서 답을 알 수도 있지만, 거의 항상 자원 봉사자는 만족스러운 답을 얻을 때까지 제공된 데이터를 가져 와서 재생합니다. 그런 다음 그들은 그것을 당신과 나눕니다. 데이터를 제공하지 않으면 누군가가 데이터를 만들어내어 놀 수있게됩니다. 다시 한 번, 누군가가 대답을 알고 도움을 얻을 수 있습니다. 내 유일한 요점은 당신이 데이터를 제공함으로써 당신의 확률을 극적으로 증가 시킨다는 것입니다. – piRSquared

+0

완전 동의합니다! 이 경우에는 데이터 프레임에 NaN 또는 무언가가 있기 때문일 수 있습니다 ... –

+1

먼저 로그 배율을 설정하십시오 – mwaskom

답변

1

mwaskom이 의견을 어떻게 해결할 수 있는지 설명해주었습니다. 는 심지어 swamplot doku에 기재되어

참고 점을 적절히 배치하는 데이터 포인트의 좌표 사이의 정확한 변환을 필요로한다는. 즉, 스 플름 플롯을 그리기 전에 기본값이 아닌 축 제한을 설정해야합니다. 기존 축을 설정

로그 규모와 플롯이 사용하기 : 올바른에

fig = plt.figure() # create figure 
    rect = 0,0,1,1 # create an rectangle for the new axis 
    log_ax = fig.add_axes(rect) # create a new axis (or use an existing one) 
    log_ax.set_yscale("log") # log first 
    sns.swarmplot(x=self.dte.label_temperature, y=self.dte.label_current, hue=self.dte.label_voltage, data = df, ax = log_ax) 

이 수율 및 플로팅 행동 원하는 : 이 enter image description here

관련 문제