2017-04-12 1 views
1

마커 (X)를 건물의지면에 표시하는 스크립트를 작성했습니다. 또한 각 마커에 상대적으로 채색 된 점을 추가하고 싶습니다. 다음 그림과 같이 지금까지는 잘 작동합니다. 포인트를 플롯하기 위해 다음 코드를 사용합니다. 단일 마커의 좌표를 사용하고 X 마커의 위치를 ​​기준으로 포인트를 배치하는 것을 볼 수 있습니다.마커 크기에 상대적인 두 마커 사이의 공간 제어

plt.plot((((coordinates[i][1]-0.5*(j+1.8)))),(((coordinates[i][2]+0.5*(k-1)))),...) 

그러나, 내가 뭘하고 싶은 다음과 같이 상대적으로 실제 좌표를 BEI가 아닌 X-마커하지만 X-시간 마커의 크기에 따라 포인트를 배치하는 것입니다 :

plt.plot((((coordinates[i][1]-0.5*(j+markersize)))),(((coordinates[i][2]+0.5*(k-markersize)))),...) 

인가 이렇게 쉬운 방법이 있습니까?

도움을 주셔서 감사합니다.

enter image description here

답변

0

당신은 X 마커와 동일한 위치에서의 도트 플롯 스케일링 변환을 사용하지만,이 markersize 단위로 지정 오프셋있다.

import matplotlib.pyplot as plt 
import matplotlib.transforms 

fig, ax = plt.subplots() 

def offsetpoint(x,y, px,py, msize, **kwargs): 
    dx = px * msize/72.; dy = py * msize/72. 
    to = matplotlib.transforms.ScaledTranslation(dx,dy,fig.dpi_scale_trans) 
    trans = ax.transData + to 
    ax.plot(x,y, transform=trans, marker="o", ms=msize/4.7,**kwargs) 

ms = 7 
ax.plot([2],[3], ms=ms, marker="x",color="crimson") 
offsetpoint([2],[3], -1,-0.5, ms, color="crimson") 
offsetpoint([2],[3], -1,0 , ms, color="limegreen") 
offsetpoint([2],[3], -1,0.5, ms, color="gold") 
offsetpoint([2],[3], -1.5,-0.5, ms, color="gold") 
offsetpoint([2],[3], -1.5,0, ms, color="limegreen") 
offsetpoint([2],[3], -1.5,0.5, ms, color="crimson") 

ms = 15 
ax.plot([1.5],[1.5], ms=ms, marker="x",color="mediumblue") 
offsetpoint([1.5],[1.5], -1,-0.5, ms, color="darkviolet") 
offsetpoint([1.5],[1.5], -1,0 , ms, color="turquoise") 
offsetpoint([1.5],[1.5], -1,0.5, ms, color="gold") 
offsetpoint([1.5],[1.5], -1.5,-0.5, ms, color="darkviolet") 
offsetpoint([1.5],[1.5], -1.5,0, ms, color="limegreen") 
offsetpoint([1.5],[1.5], -1.5,0.5, ms, color="indigo") 

ax.margins(x=0.5, y=0.5) 
plt.show() 

enter image description here

관련 문제