표준 형식을 사용하지 않고 TikZ에서 소수점 이하 3자리를 인쇄합니다.

표준 형식을 사용하지 않고 TikZ에서 소수점 이하 3자리를 인쇄합니다.

3개의 십진수를 사용하여 0부터 1까지 눈금자 표시를 하려고 합니다. 그래서 나는 눈금자가 다음과 같이 보이도록 하고 싶습니다.

0.000 0.001 0.002 0.003 ..... 0.010 0.011

등등.

한 페이지에 다 담기에는 너무 많아서 여러 페이지로 나누어서 첫 번째 페이지에 이 코드를 사용하겠습니다.

\begin{tikzpicture}[line cap=round,line join=round,>=triangle 45,x=1.0cm,y=1.0cm]

\draw[ultra thick,color=black] (0,0) -- (26,0);
\foreach \x[evaluate=\x as \text using \x*0.001] in {0,1,2,3,...,40}{
    \draw[shift={(\x*0.65,0)},color=black] (0pt,2pt) -- (0pt,-2pt) node[yshift = -20pt,rotate = 270] { 
         \pgfmathparse{\x*0.001}\pgfmathprintnumberto[precision=1] {\pgfmathresult}{\pgfmathresult} \pgfmathresult };
}
\end{tikzpicture}

이 코드를 실행하면 다음과 같은 결과가 나타납니다.

여기에 이미지 설명을 입력하세요

표준 형식이 아닌 서면 예에 표시된 숫자를 얻는 것이 가능합니까?

루프를 더 간단하게 만들고 평가를 사용하지 않고 다음과 같이 수행하는 것이 가능합니까?

\draw[shift={(\x*0.65,0)},color=black] (0pt,2pt) -- (0pt,-2pt) node[yshift = -20pt,rotate = 270] { \x*0.001 };
}

감사합니다

답변1

이미 .\pgfmathparseevaluate그냥 본문 \pgfmathprintnumber[fixed,precision=3]{\text}에 사용하세요 node. fixed과학적 표기법을 비활성화합니다. 대신 \pgfmathprintnumber[fixed,fixed zerofill,precision=3]{\text}get을 사용합니다 .0.0000.0

\x*0.001숫자로 구문 분석되지 않고 단지 텍스트이므로 노드 텍스트에서 직접 사용할 수 없습니다 . 라고 말할 수도 있겠지만 node[...]{\pgfmathparse{\x*0.001}\pgfmathprintnumber[fixed,precision=3]{\pgfmathresult}};, 그렇다면 더 깨끗하다고 ​​말하고 싶습니다 evaluate.

여기에 이미지 설명을 입력하세요

\documentclass[border=4mm]{standalone}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}[line cap=round]
\draw[ultra thick,color=black] (0,0) -- (26,0);
\foreach \x[evaluate=\x as \text using \x*0.001] in {0,...,40}{
    \draw (\x*0.65,2pt) -- ++(0,-4pt)
       node[below=3pt,anchor=west,align=left,rotate = 270] 
          {\pgfmathprintnumber[fixed,fixed zerofill,precision=3]{\text}};
}
\end{tikzpicture}
\end{document}

관련 정보