컬러바에서 수동으로 크기가 조정된 틱

컬러바에서 수동으로 크기가 조정된 틱

최근에 수동으로 지정된 코드를 사용하여 컬러바의 눈금 크기를 조정할 수 없는 이상한 오류가 발생했습니다.

다음 예를 고려하십시오.

\documentclass[tikz,border=10pt]{standalone}

\usepackage{pgfplots}

\pgfplotsset{
  colormap/viridis,
}

\begin{document}
\begin{tikzpicture}
  \begin{axis}[
      domain=1e3:10e3,
      scaled x ticks=manual:{}{\pgfmathparse{#1/1000}},
      scaled y ticks=manual:{}{\pgfmathparse{#1/1000}},
      colorbar,
      colorbar style={
        scaled y ticks=manual:{}{\pgfmathparse{#1/1000}},
      },
    ]
    \addplot [mesh,ultra thick] {x};
  \end{axis}
\end{tikzpicture}
\end{document}

산출

및 눈금 xy1000배로 축소되지만(예: SI 접두사 변경) 해당 정보가 단위로 인코딩되므로 크기 조정이 표시되지 않습니다. 컬러바에 'NaN'이 나타나는 것은 분명히 바람직하지 않으며 수정해야 하지만, 축에 작동하는 동일한 코드가 컬러바에는 작동하지 않습니다.

답변1

컬러바에서 스케일링이 작동하지 않는 이유는 인수의 확장이 두 개 있기 때문입니다. TeX에서는 #1첫 번째 인수를 참조하며(또는 첫 번째 인수가 없는 경우 아무것도 없음) #1틱 번호로 확장하려는 의도입니다.

여기서 문제는 TeX가 인수가 무엇인지 발견할 때 colorbar style첫 번째 확장을 수행하고 인수가 없기 때문에 유효하지 않은 NaN \pgfmathparse{#1/1000}으로 확장한다는 것입니다.\pgfmathparse{/1000}

이 문제를 해결하려면 크기 조정을 로 지정해야 합니다 \pgfmathparse{##1/1000}. 위에서 설명한 문제가 있는 확장 중에 이는 \pgfmathparse{#1/1000}원하는 대로 확장된 다음 컬러바의 눈금 크기를 올바르게 조정하는 데 사용될 수 있습니다.

\documentclass[tikz,border=10pt]{standalone}

\usepackage{pgfplots}

\pgfplotsset{
  colormap/viridis,
}

\begin{document}
\begin{tikzpicture}
  \begin{axis}[
      domain=1e3:10e3,
      scaled x ticks=manual:{}{\pgfmathparse{#1/1000}},
      scaled y ticks=manual:{}{\pgfmathparse{#1/1000}},
      colorbar,
      colorbar style={
        scaled y ticks=manual:{}{\pgfmathparse{##1/1000}},
      },
    ]
    \addplot [mesh,ultra thick] {x};
  \end{axis}
\end{tikzpicture}
\end{document}

산출

관련 정보