2013-04-19 6 views
0

여기서 로그 스케일 I 좌표 데이터로부터 좌표 변환하기 위해서변환은

newcoords = ax.transLimits.transform(np.array(oldcoords))) 

가 축 좌표 newcoords 플롯 oldcoords 좌표 싶지 간단한 일이다. 내 플롯은 하나의 축을 선형 눈금으로, 다른 하나는 로그 눈금으로 표시합니다. 선형 스케일 (예 : x)에 해당하는 구성 요소가 올바르게 변환되지만 로그 스케일 (예 : y)에 해당하는 구성 요소는 올바르게 변환되지 않습니다.

시도했지만 작동하지 않습니다. 어떻게해야합니까?

transInstance = ax.transLimits + ax.transScale 
newcoords = transInstance.transform(oldcoords) 
+0

당신이하려는 일에 대해 좀 더 많은 정보를 제공 할 수 있습니까? 최종 목표를 달성하는 쉬운 방법이있는 것 같습니다. – tacaswell

+0

괜찮지 만 컨텍스트가 약간 복잡하고 중요하지 않다고 생각합니다. 'pcolormesh'로 만든 플롯이 있는데,이 플롯은 선형 스케일의 축 하나와 로그 스케일의 다른 축이 있습니다. 플롯, 최소값 대신 직사각형을 그리면이 최소값을 표시하려고합니다. 그러나 로그 스케일 때문에 데이터 좌표에 플롯하면 직사각형이 모양이 나빠 지므로 플롯에 그립니다 좌표, 즉 읽을 수있는 데이터 독립적 인 크기를 제공하기 때문에 쉬운 일이되어야하는이 변환이 필요하지만, 내가 잘못했다고 생각합니다. – pms

+0

간단히 말해서 : 나는 가운데에 사각형을 그려야합니다. 선택된 데이터 영역에 있지만 플롯의 크기와 관련된 크기를 갖는 경우 (예 : 플롯의 5 %에 ​​해당하는 너비와 높이를 중심에 독립적으로 배치 할 수 있습니다. – pms

답변

0

데이터에 어떤 변형이 일어나는지 분명히해야합니다. 이전 좌표 x, y로 데이터가 있다고 가정합니다. 그런 다음 새로운 좌표 x '와 y'로 변환하고 x '를 log (y')에 대해 변환 하시겠습니까?

이 경우 최소값을 찾을 때 x'-log (y ') 공간에 점이 있으며이 좌표에서 직사각형을 그릴 필요가 있습니다.

오해를하는 경우 사과드립니다. 그러나 어떤 변형을했는지 적어두고 주문 내용을 기억하십시오.

+0

음 ... 이보다 훨씬 더 간단합니다.) x, y, 그리고 로그 스케일로 플롯 y를 갖기 때문에 matplotlib가이 변환을 수행합니다 : x '= x, y'= log (y). 그런 다음 x, y 좌표의 점을 찾고 x ', y'좌표 또는 x ', y'와 기본적으로 같은 좌표 좌표에서 직사각형을 그립니다. 나는이 사각형의 크기를 수동으로 계산할 수 있다는 것을 알고 있지만, matplotlib 명령을 사용하여이를 수행하는 더 간단한 방법이 있어야합니다. – pms

+0

오케이 죄송합니다. 오해 하셨고 두 가지 변형이 있다고 생각했습니다. 내 사과. – Greg