pgfplot 축 범위 외부에 노드 텍스트 표시

pgfplot 축 범위 외부에 노드 텍스트 표시

pdflatex로 그림을 만들기 위해 pgfplots .tex 코드를 생성하기 위해 matlab2tikz를 사용하고 있습니다. 그림을 생성하는 데 사용하는 matlab 함수는 각 눈금 표시 레이블을 명시적으로 생성하므로 다음 matlab 코드를 사용하여 크기를 조정하고 회전할 수 있습니다.

text(x(k),y(k),labs{k},'horizontalalignment',horizk,...
'verticalalignment',vertk, ...
'rotation',rotang(k), ...
'fontsize',gfontsize*scl(k), ...
'color',gcolor, ...
'tag','m_grid_xticklabel', ...
'fontname',gfontname);

변환된 .tex 코드를 조사해보니 다음과 같은 내용이 표시됩니다.

\node[below, inner sep=0mm, rotate=359.994889043193, text=black]
at (axis cs:-8.79858922562881e-07,  -4.84813663392814e-06,0) {$\text{  81}^\text{o}\text{W }$};

단일 눈금 표시 레이블을 나타냅니다. 그러나 이 줄 코드에 해당하는 텍스트 문자열은 결과 .pdf에 나타나지 않습니다. 아마도 특정 좌표가 축 범위 밖에 있기 때문일 것입니다. 이를 테스트하기 위해 범위 내 좌표를 대체하고 컴파일한 후 레이블이나 텍스트가 표시되는 것을 확인했습니다.

흥미롭게도, matlab에서 view 명령을 사용하여 그림을 생성하면 다음과 같습니다.

view(45,45)

축 레이블을 나타내는 텍스트 문자열을 볼 수 있지만 정렬이 꺼져 있습니다. 특히, 문자열은 내가 예상했던 것보다 그림에서 훨씬 더 높은 위치에 배치되는 y 값을 갖는 것으로 보입니다. 제 생각에는 X 정렬이 맞는 것 같아요.

내가 보는 솔루션은 matlab 측이나 pgfplots/tikz 측에 있을 수 있습니다. 이상적으로 솔루션은 프리앰블에 포함되거나 축 레이블을 설정할 때 포함될 짧은 코드 비트로 구성됩니다. 이 코드는 다음 구문으로 생성된 텍스트를 허용합니다.

\node[<options>] at (axis cs:x,y,z) {<text>};

x, y, z 좌표가 범위 내에 있는지 여부에 관계없이 표시됩니다. 제안이 반드시 쉽게 나오지 않는 경우 mwe를 만들 수 있습니다.

답변1

clip=false환경 옵션 에 추가하면 축의 경계 상자 외부에 나타나는 모든 것을 클리핑하는 axis기본 동작이 무시됩니다 .pgfplots

생성된 다른 코드에 따라 다른 부작용이 있을 수 있지만 대부분의 경우 괜찮습니다.

matlab2tikz이 키 설정은 의 기능을 사용하여 생성된 코드에 추가할 수 있습니다 EXTRAAXISOPTIONS. 를 호출하기 전에 matlab2tex다음을 추가하세요.

EXTRAAXISOPTIONS = {'clip=false'};

생성된 코드에 이 옵션을 추가합니다.

관련 정보