다음 코드에서는 x축의 레이블이 128,256,1024,2048,4096이 되기를 원합니다. 그러나 컴파일하면 128,256,1020,2050,4100이 표시됩니다. 내가 무엇을 놓치고 있나요?
\documentclass{article}
\usepackage{pgfplots}
\usepackage{amsmath}
\pgfplotsset{compat=1.14}
\begin{document}
\begin{tikzpicture}
\begin{axis}[
xlabel={x},
ylabel={y},
width=260pt,
x tick label style={major tick length=0pt},
xmode=log,
log ticks with fixed point,
xtick=data,
ytick={9,10,11,12,13,14,15,16,17,18,19,20},
minor y tick num=1,
ymajorgrids,
legend style={at={(0.5,0.97)},
legend entries={{$\epsilon=\tfrac{1}{17}$,},{$\epsilon=\tfrac{1}{16}$,},{$\epsilon=\tfrac{1}{15}$,},$\epsilon=\tfrac{1}{14}$},
anchor=north,legend columns=-1},
ybar,
bar width=5pt,
]
\addplot[fill=red!80,
error bars/.cd,
y dir=plus,
y explicit,
]
plot coordinates {
(128,9.217) += (0,4.783)
(256,10.128) += (0,4.872)
(512,11.125) += (0,5.875)
(1024,11.918) += (0,5.082)
(2048,12.785) += (0,5.215)
(4096,13.994) += (0,5.006)
};
\end{axis}
\end{tikzpicture}
\end{document}
답변1
빠르고 더러운 것은 알지만 지금은
xticklabels={128,256,512,1024,2048,4096}
(또는 xticklabels={128,256,512,{1,024},{2,048},{4,096}}
천 단위 구분 기호를 선호하는 경우 )를 사용할 수 있습니다.
답변2
정의 를 확인하지 않고 log ticks with fixed point
표시된 결과는 숫자의 일부 반올림 때문인 것 같습니다. 그러니 자신만의 스타일을 정의하고 필요한 반올림을 선택하세요.
자세한 내용은 코드의 주석을 살펴보시기 바랍니다.
% used PGFPlots v1.15
\documentclass[border=5pt]{standalone}
\usepackage{amsmath}
\usepackage{pgfplots}
\pgfplotsset{
compat=1.14,
% define your own x tick label style
% (adapted from <https://tex.stackexchange.com/a/139084/95441>)
log x ticks with fixed point/.style={
xticklabel={
\pgfkeys{/pgf/fpu=true}
\pgfmathparse{exp(\tick)}%
\pgfmathprintnumber[fixed,precision=0]{\pgfmathresult}
\pgfkeys{/pgf/fpu=false}
},
},
}
\begin{document}
\begin{tikzpicture}
\begin{axis}[
xlabel={$x$},
ylabel={$y$},
width=260pt,
xmode=log,
% replace the "default" style ...
% log ticks with fixed point,
% ... with the custom style
log x ticks with fixed point,
xtick=data,
x tick label style={
major tick length=0pt,
},
ytick={9,...,20},
minor y tick num=1,
ymajorgrids,
legend style={
at={(0.5,0.97)},
anchor=north,
legend columns=-1,
},
legend entries={
{$\epsilon=\tfrac{1}{17}$,},
{$\epsilon=\tfrac{1}{16}$,},
{$\epsilon=\tfrac{1}{15}$,},
$\epsilon=\tfrac{1}{14}$%
},
ybar,
bar width=5pt,
]
\addplot[
fill=red!80,
error bars/.cd,
y dir=plus,
y explicit,
] coordinates {
(128,9.217) += (0,4.783)
(256,10.128) += (0,4.872)
(512,11.125) += (0,5.875)
(1024,11.918) += (0,5.082)
(2048,12.785) += (0,5.215)
(4096,13.994) += (0,5.006)
};
\end{axis}
\end{tikzpicture}
\end{document}